Создание и потоковая передача большого архива без сохранения его в памяти или на диске

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

Я могу использовать Tar или Zip или что-нибудь самое простое. Я использую django, который позволяет мне возвращать генератор или подобный файлу объект в моем ответе. Этот объект может быть использован для прокачки процесса. Однако у меня возникают проблемы с выяснением того, как построить подобные вещи вокруг библиотек zipfile или tarfile, и я боюсь, что они могут не поддерживать чтение файлов по ходу или чтение архива, как он собран.

Этот ответ напреобразование итератора в файловый объект может помочь.tarfile#addfile занимает многократное, но, кажется, немедленно передать этоshutil.copyfileobj, так что это может быть не так удобно для генератора, как я надеялся.

Ответы на вопрос(4)

Ваш ответ на вопрос