Я работаю над отправкой файла http на сервер. Для обработки больших файлов я использую chunk upload, где файлы делятся на куски с разрешением 1 МБ и синхронно отправляются на серверный сервер в виде запроса POST. На серверной серверной бутылке я получаю кусок и добавляю его в новый файл с помощью file.write.
@route('file_upload', method = 'POST')
def file_upload():
file_content = request.body'enter code here'
with open(dst_path,'ab') as dst_file_obj:
dst_file_obj.write(file_content.read())
dst_file_obj.close()
Но открытие и закрытие файлового дескриптора каждый раз, когда я получаю куски, является дорогостоящей операцией. Теперь, как я могу открыть файл на первом фрагменте и закрыть при получении последнего фрагмента байтов без открытия и закрытия каждого фрагмента, который я получаю для определенного файла?
Не зная деталей, разве это не работает?:
@route('file_upload', method = 'POST')
def file_upload():
file_content = request.body'enter code here'
with open(dst_path,'ab') as dst_file_obj:
for chunk in file_content:
dst_file_obj.write(chunk)
# dst_file_obj.close() #< not needed gets closed when with is left