有什么方法可以延长请求超时限制?

时间:2014-10-01 05:27:10

标签: python heroku flask

我正在

  

[2] [关键]工作时间超时=错误代码= H12 desc ="请求超时"   method = POST dyno = web.1 connect = 1ms service = 30000ms

我正在使用

在heroku上启动一个烧瓶网络应用程序
web: gunicorn server:app --timeout 60 --worker-class gevent --log-file=-

--timeout标志似乎无关紧要,无论我是使用sync还是gevent worker。我有什么想法可以延长请求超时限制吗?

当然,我可能需要研究这种漫长过程的异步处理。

2 个答案:

答案 0 :(得分:5)

正如an official Heroku discussion上的回答(链接已经过时),我们无法将超时设置为超过30秒:

  

Heroku会杀死所有超过30秒的请求。没有办法   改变这种行为。


您需要通过将呼叫分成多个较小的块来重新设计发送请求的方式。 Javascript是要走的路。

答案 1 :(得分:0)

这不是Heroku特有的,但一般来说增加超时是一个坏主意;你应该尽可能地立即返回一个响应 - 对于任何可能需要几秒钟的时间你应该接受请求,将其排队等待后台处理并返回响应,这样你的客户端就不会被阻止。

对于Heroku,这意味着你必须调整一个工作进程。这与您已经拥有的web dyno不同,它设计为在后台运行并且没有这样的超时限制。

对于这个常见模式的一个很好的结果,有一个excellent writeup at the devcenter来详细说明整个过程。

特别是对于Heroku上的Python,这是使用redis queue实现的。