From f57fd9f82848639bb9407a4342012b964e40c2c3 Mon Sep 17 00:00:00 2001 From: Ethan Estrada Date: Wed, 11 Nov 2015 17:08:39 -0700 Subject: [PATCH] Avoid errors when uploading large files Reading/writing a large file all at once can cause a MemoryError or an OverflowError. Using `shutil.copyfileobj` seems to solve the issue. --- shotgun_api3/shotgun.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/shotgun_api3/shotgun.py b/shotgun_api3/shotgun.py index 3050d0be7..5c4492eca 100755 --- a/shotgun_api3/shotgun.py +++ b/shotgun_api3/shotgun.py @@ -2566,7 +2566,9 @@ def encode(self, params, files, boundary=None, buffer=None): buffer.write('Content-Type: %s\r\n' % content_type) buffer.write('Content-Length: %s\r\n' % file_size) fd.seek(0) - buffer.write('\r\n%s\r\n' % fd.read()) + buffer.write('\r\n') + shutil.copyfileobj(fd, buffer) + buffer.write('\r\n') buffer.write('--%s--\r\n\r\n' % boundary) buffer = buffer.getvalue() return boundary, buffer