在 pyramid/gunicorn 中覆盖请求超时

Override request timeout in pyramid/gunicorn

金字塔 (v1.5) 应用程序由 gunicorn (v19.1.1) 在英勇的 BeagleBone Black 上支持 nginx "server".

一个特定的请求需要大量 I/O 和服务器上的处理器时间(从数据库导出数据、格式化为 xls 和服务) 这导致 gunicorn worker 超时和 nginx 返回的 'Bad gateway' 错误。

有没有一种实用的方法来处理这个每个请求而不是增加所有请求的全局请求超时? 这只是一个特定的请求,所以我正在寻找最快和最脏的解决方案,而不是实施正确的异步客户端通知协议。

来自docs:

超时¶

-t INT, --timeout INT
30

静默时间超过此秒数的 Worker 将被杀死并重新启动。

一般设置为三十秒。只有在您确定对同步工作人员的影响时才将此值设置得明显更高。对于非同步工作进程,这仅意味着工作进程仍在通信,并且不受处理单个请求所需的时间长度的限制。 graceful_timeout

--graceful-timeout INT
30

优雅的工作进程重启超时。

一般设置为三十秒。 max time worker 在收到重启信号后如何处理请求。如果时间到了,工人将被强制杀死。 保活

--keep-alive INT
2

在 Keep-Alive 连接上等待请求的秒数。

一般设置在1-5秒范围内。