【问题标题】:Heroku terminates worker performing http chunking (streaming) [duplicate]Heroku终止执行http分块(流式传输)的工作人员[重复]
【发布时间】:2017-08-17 17:00:04
【问题描述】:

根据 heroku Docs,只要每 55 秒发送一次数据,它就允许长响应。

Heroku 支持 HTTP 1.1 功能,例如长轮询和流式响应。应用程序有一个初始的 30 秒窗口,用于向客户端返回一个字节。但是,此后传输的每个字节(从客户端接收或由您的应用程序发送)都会重置一个滚动的 55 秒窗口。如果在 55 秒窗口内没有发送数据,连接将被终止。

我的工作应用程序每隔几秒返回一个 StreamingHttpResponse,它在 30 秒后被终止

app[web.1]: [2017-03-24 16:26:24 +0000] [4] [CRITICAL] WORKER TIMEOUT (pid:24)
app[web.1]: [2017-03-24 16:26:24 +0000] [24] [INFO] Worker exiting (pid: 24)
heroku[router]: sock=backend at=error     code=H18 desc="Server Request Interrupted" method=POST path="/createRepos" host=managegithub.herokuapp.com request_id=96d4d31e-f9ff-46c0-b727-04ca0dfae2a3 fwd="89.127.160.122" dyno=web.1 connect=6ms service=30690ms status=503 bytes= protocol=https
app[web.1]: [2017-03-24 16:26:25 +0000] [31] [INFO] Booting worker with pid: 31

为什么工作会被终止,而它每隔几秒就不断地响应数据?

【问题讨论】:

  • 你的 procfile 中有 --keep-alive 吗?例如web: gunicorn info.wsgi --keep-alive 5
  • 是:--keep-alive 300

标签: python django heroku


【解决方案1】:

--timeout 300 添加到 procfile 有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    • 2018-02-09
    • 2018-07-04
    • 1970-01-01
    • 2010-09-24
    相关资源
    最近更新 更多