我正试图通过gunicorn运行一个简单的烧瓶应用程序,但无论我做什么,让我的工人超时。无论是否存在针对应用程序的活动,在我将timeout
值设置为之后,工作人员将始终超时。是什么导致他们超时?当我制作请求时,请求会成功完成,但工作人员仍会超时。这就是我正在运行的:
gunicorn test_app.py -b 127.0.0.1:8000 --log-level=debug --log-file /tmp/log
* Running on http://127.0.0.1:5000/
127.0.0.1 - - [28/Aug/2014 11:23:50] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [28/Aug/2014 11:23:53] "GET / HTTP/1.1" 200 -
* Running on http://127.0.0.1:5000/
* Running on http://127.0.0.1:5000/
这就是我在/ tmp / log中看到的内容:
[2014-08-28 11:23:32 -0700] [36868] [INFO] Listening at: http://127.0.0.1:8000 (36868)
[2014-08-28 11:23:32 -0700] [36868] [INFO] Using worker: sync
[2014-08-28 11:23:32 -0700] [36871] [INFO] Booting worker with pid: 36871
[2014-08-28 11:23:32 -0700] [36868] [DEBUG] 1 workers
[2014-08-28 11:24:02 -0700] [36868] [CRITICAL] WORKER TIMEOUT (pid:36871)
[2014-08-28 11:24:02 -0700] [36868] [DEBUG] 1 workers
[2014-08-28 11:24:03 -0700] [36868] [DEBUG] 1 workers
[2014-08-28 11:24:03 -0700] [36872] [INFO] Booting worker with pid: 36872
[2014-08-28 11:24:03 -0700] [36868] [DEBUG] 1 workers
[2014-08-28 11:24:03 -0700] [36868] [DEBUG] 1 workers
[2014-08-28 11:24:33 -0700] [36868] [CRITICAL] WORKER TIMEOUT (pid:36872)
[2014-08-28 11:24:33 -0700] [36868] [DEBUG] 1 workers
[2014-08-28 11:24:33 -0700] [36872] [INFO] Worker exiting (pid: 36872)
[2014-08-28 11:24:33 -0700] [36873] [INFO] Booting worker with pid: 36873
[2014-08-28 11:24:33 -0700] [36868] [DEBUG] 1 workers
[2014-08-28 11:24:33 -0700] [36868] [DEBUG] 1 workers
[2014-08-28 11:25:03 -0700] [36868] [CRITICAL] WORKER TIMEOUT (pid:36873)
正如你所看到的,我的工作者每30秒就会超时一次,即使它没有任何问题。是什么给了什么?
答案 0 :(得分:6)
对于将来遇到此问题的任何人,主要问题是我在做什么:
app.run()
而不是
if __name__ == '__main__':
app.run()
与前者一样,工人们最终会被烧瓶而不是枪炮,整个事情会变得混乱。只是切换到后者解决了我的问题。
答案 1 :(得分:2)
通常,如果请求花费更多时间,则工作者超时。尝试添加名为--timeout <some value>
的新参数,它应该可以工作。
例如:gunicorn test_app.py -b 127.0.0.1:8000 --log-level=debug --log-file /tmp/log -t 900