Скачивайте файлы в виде потока, не загружая полные файлы в память

Я хочу загружать файлы в виде потока с удаленного сервера и делать из них zip поток и возвращать его во frontend в виде потока без ожидания завершения загрузки всех файлов.

Возможно ли это в python и фреймворке python? Я пробовал как показано ниже, но не работает, я использую фреймворк Django:

 zip_buffer = io.BytesIO()

 with zipstream.ZipFile(zip_buffer,"w", zipfile.ZIP_DEFLATED, False) as zf:
     url = "https://download-file/zy"
     r = requests.get(url, stream=True)
     zip_inf = zipstream.ZipInfo(file_name)
     zf.write_iter(zip_inf, r.content)
response = StreamingHttpResponse(zip_buffer.getvalue(), content_type='application/octet-stream')
            response['Content-Disposition'] = 'attachment; filename=zip-files.zip'
            return response

Я попробовал использовать aiozipstream и fast api для streamingResponse. это решение сработало для меня.

 files = []
 urls = ['url1','ur2']
 for url in urls:
    files.append({'stream': file_content_generator(url), 'name': url.split('/')[-1]})
 zf = ZipStream(files, chunksize=32768)

 response = StreamingResponse(zf.stream(), media_type='application/zip')
    return response

def file_content_generator(url):
     with httpx.stream('GET', url, timeout=None) as r:
          yield from r.iter_bytes()
Вернуться на верх