Операция открытия и закрытия дескриптора файла Python для загрузки файлов по частям

1

Я работаю над отправкой файла 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()

Но открытие и закрытие файлового дескриптора каждый раз, когда я получаю куски, является дорогостоящей операцией. Теперь, как я могу открыть файл на первом фрагменте и закрыть при получении последнего фрагмента байтов без открытия и закрытия каждого фрагмента, который я получаю для определенного файла?

Теги:
python-2.7

1 ответ

0

Не зная деталей, разве это не работает?:

@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
  • 0
    Здесь мы все еще открываем файл для каждого фрагмента (запроса) файла. Мой вопрос: есть ли способ, которым мы можем открыть его один раз при первом запросе (чанке) и следующем чанке, мы не должны открывать файл снова, вместо этого мы должны иметь возможность добавлять, пока не будет получен последний чанк.
  • 0
    Это правда, если ваши куски приходят по запросу. Как бы вы узнали, что такое последний кусок? Это выглядит как Flask для меня ... может быть, посмотрите на: pythonhosted.org/Flask-Uploads ?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню