Don't close prematurely..

This commit is contained in:
Erik Johnston 2017-10-12 17:57:31 +01:00
parent cc505b4b5e
commit 4ae85ae121

View File

@ -97,12 +97,13 @@ class MediaRepository(object):
os.makedirs(dirname) os.makedirs(dirname)
@staticmethod @staticmethod
def _write_file_synchronously(source, fname): def _write_file_synchronously(source, fname, close_source=False):
source.seek(0) # Ensure we read from the start of the file source.seek(0) # Ensure we read from the start of the file
with open(fname, "wb") as f: with open(fname, "wb") as f:
shutil.copyfileobj(source, f) shutil.copyfileobj(source, f)
source.close() if close_source:
source.close()
@defer.inlineCallbacks @defer.inlineCallbacks
def write_to_file(self, source, path): def write_to_file(self, source, path):
@ -148,10 +149,12 @@ class MediaRepository(object):
yield preserve_context_over_fn( yield preserve_context_over_fn(
threads.deferToThread, threads.deferToThread,
self._write_file_synchronously, source, backup_fname, self._write_file_synchronously, source, backup_fname,
close_source=True,
) )
else: else:
preserve_fn(threads.deferToThread)( preserve_fn(threads.deferToThread)(
self._write_file_synchronously, source, backup_fname, self._write_file_synchronously, source, backup_fname,
close_source=True,
) )
else: else:
source.close() source.close()