从 Heroku 流式传输大文件在 30 秒超时后失败
Posted
技术标签:
【中文标题】从 Heroku 流式传输大文件在 30 秒超时后失败【英文标题】:Streaming large file from Heroku fails after 30 seconds timeout 【发布时间】:2013-07-10 16:00:52 【问题描述】:我有一个 python 网络工作者,可以根据客户端请求流式传输一个大文件。 30 秒后,连接被 Heroku 终止。我正在使用web.py
并产生新的输出。根据 Heroku 文档:
Cedar 支持 HTTP 1.1 功能,例如长轮询和流式响应。应用程序有一个初始的 30 秒窗口,用于向客户端返回一个字节。但是,此后传输的每个字节(从客户端接收或由您的应用程序发送)都会重置一个滚动的 55 秒窗口。如果在 55 秒窗口内没有数据发送,连接将被终止。
我每 55 秒发送超过 1 个字节,但连接仍然终止。
这些是我正在使用的标题
web.header('Content-type' , 'application/zip')
web.header('Content-Disposition', 'attachment; filename="images.zip"')
我什至尝试添加:
web.header('Transfer-Encoding','chunked')
我做错了吗?
【问题讨论】:
有这方面的消息吗?我遇到了同样的问题。 【参考方案1】:问题似乎是由错误的gunicorn
设置造成的。在Procfile
中延长gunicron
超时就成功了:
--timeout 300
【讨论】:
这样做有什么影响?我的意思是,如果遇到攻击或错误,服务器会变得不负责任吗?以上是关于从 Heroku 流式传输大文件在 30 秒超时后失败的主要内容,如果未能解决你的问题,请参考以下文章
在 Heroku 上使用 Django 将大文件上传到 AWS S3 存储桶而没有 30 秒的请求超时