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