gpt4 book ai didi

来自 RESTful API 的 Django 流式传输 HTTP 响应

转载 作者:可可西里 更新时间:2023-11-01 17:04:48 26 4
gpt4 key购买 nike

我有一个 Django 应用程序需要与医学图像数据库进行交互。他们有一个返回字节流的 RESTful API,我正在将其写入 HttpStreamingResponse。这是可行的,但问题是它非常慢。我下载的大多数文件都在 100 MB 左右,通常需要 15-20 秒才能开始下载。有没有人知道如何加快此过程并更快地开始下载?

这是我的代码:

# Make api call
response = requests.get(url, cookies=dict(JSESSIONID=self.session_id))
# write bytes to Http Response
http = StreamingHttpResponse(io.BytesIO(response.content), content_type='application/zip')

http['Content-Disposition'] = 'attachment; filename="%s.zip"' % patient_id
return http

最佳答案

在传递信息之前,您正在将完整的响应下载到您的服务器。

您应该使用以下方法转发来自 API 调用的响应:

res = FROM API CALL
response = HttpResponse(ContentFile(res.content), 'application/zip')
response['Content-Disposition'] = 'attachment; filename={}.zip'.format(patient_id)
response['Content-Length'] = res.headers.get('Content-Length')
response['Content-Transfer-Encoding'] = res.headers.get('Content-Transfer-Encoding')
response['Content-Type'] = res.headers.get('Content-Type')
return response

确保复制所有重要的标题。


编辑:由于这是唯一提出的解决方案,我正在编辑以更易读的格式包含 John 评论中的解决方案:

# Make api call 
response = requests.get(url, cookies=dict(JSESSIONID=self.session_id), stream=True)
# write bytes to Http Response
http = StreamingHttpResponse(response.iter_content(8096), content_type='application/zip')
http['Content-Disposition'] = 'attachment; filename="%s.zip"' % patient_id
return http

关于来自 RESTful API 的 Django 流式传输 HTTP 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52174952/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com