我已经设置了gunicorn与3个工人,30个工人连接和使用eventlet工人类。它被设置在Nginx后面。每请求几次,我就会在日志里看到这个。
[ERROR] gunicorn.error: WORKER TIMEOUT (pid:23475)
None
[INFO] gunicorn.error: Booting worker with pid: 23514
为什么会这样?我怎样才能知道哪里出了问题呢?
我已经设置了gunicorn与3个工人,30个工人连接和使用eventlet工人类。它被设置在Nginx后面。每请求几次,我就会在日志里看到这个。
[ERROR] gunicorn.error: WORKER TIMEOUT (pid:23475)
None
[INFO] gunicorn.error: Booting worker with pid: 23514
为什么会这样?我怎样才能知道哪里出了问题呢?
当前回答
在谷歌云 只需在app.yaml的入口点添加——timeout 90
entrypoint: gunicorn -b :$PORT main:app --timeout 90
其他回答
关于在Azure应用服务(Linux应用)上运行Flask Apps的Microsoft Azure官方文档声明超时时间为600
gunicorn --bind=0.0.0.0 --timeout 600 application:app
https://learn.microsoft.com/en-us/azure/app-service/configure-language-python#flask-app
这个端点是否花费了太多时间?
也许你使用的flask没有异步支持,所以每个请求都会阻塞调用。要创建异步支持而不让make变得困难,可以添加gevent worker。
使用gevent,一个新的调用将产生一个新的线程,你的应用程序将能够接收更多的请求
pip install gevent
gunicon .... --worker-class gevent
弗兰克的回答给我指明了正确的方向。我有一个数字海洋液滴访问管理数字海洋Postgresql数据库。我所需要做的就是将我的液滴添加到数据库的“可信来源”。
(在DO控制台点击数据库,然后点击设置。编辑Trusted Sources,选择液滴名称(在可编辑区域点击,会提示)。
使用——log-level debug运行Gunicorn。
它应该会给你一个应用程序堆栈跟踪。
对我来说,最简单的方法是在你的app.py存在的文件夹中创建一个新的config.py文件,并在其中放入超时和所有你想要的特殊配置:
timeout = 999
然后在指向这个配置文件的同时运行服务器
gunicorn -c config.py --bind 0.0.0.0:5000 wsgi:app
注意,要使这条语句工作,还需要将wsgi.py放在具有以下内容的同一目录中
from myproject import app
if __name__ == "__main__":
app.run()
干杯!