Архивируйте и скачивайте файлы в виде потока с помощью Django / AWS S3 - PullRequest
0 голосов
/ 14 мая 2019

Мне нужно разрешить пользователям загружать содержимое всей папки на S3 через мое приложение django.

Обычно я хотел бы создать zip-файл (используя файлы, полученные из boto3), а затем отправить его обратно в ответ. Этот отличный пост от botree показывает, как .

Однако это может быть много данных, и этот код хранит (в памяти или с некоторой адаптацией на жестком диске) все это на моем сервере в качестве промежуточного шага.

Я не хочу хранить предварительно обработанный zip-файл на S3, так как это значительно увеличит стоимость хранилища (а также потребует частого запуска задач для его обновления), и я не могу просто сохранить zip вместо папка из-за других S3 интеграции и управления версиями.

Вопрос

Я читал о StreamingHttpResponse, где я добавляю байты постепенно, поскольку они вычисляются в ответе, но никогда не использовал его. Могу ли я сделать это в этом случае (например, добавить байты, когда они получены из AWS?) И если да, то как?

Примечание: это не обязательно должно быть .zip, оно может быть .tar.gz или аналогичным, если это работает!

...