【问题标题】:Gunicorn workers timeout no matter whatGunicorn 工作人员无论如何都会超时
【发布时间】:2014-10-22 17:18:40
【问题描述】:

我正在尝试通过 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 秒超时一次,即使它没有任何问题。什么给了?

【问题讨论】:

    标签: python python-2.7 gunicorn


    【解决方案1】:

    如果请求需要更多时间,通常会发生工作人员超时。尝试添加名为 --timeout <some value> 的新参数,它应该可以工作。

    例如:gunicorn test_app.py -b 127.0.0.1:8000 --log-level=debug --log-file /tmp/log -t 900

    【讨论】:

      【解决方案2】:

      对于将来遇到此问题的任何人,主要问题是我在做:

      app.run()
      

      而不是

      if __name__ == '__main__':
          app.run()
      

      对于前者,工人最终会被烧瓶而不是枪炮,整个事情会变得混乱。只是切换到后者解决了我的问题。

      【讨论】:

      • 请在此处查看您是否可以提供帮助:stackoverflow.com/questions/46696179/…
      • 这拯救了我的一天。谢谢。
      • 你知道如何延长gunicorn在windows上的时间吗?顺便推到heroku
      • 你把那个放在哪里了?
      猜你喜欢
      • 1970-01-01
      • 2020-07-16
      • 2019-08-12
      • 2015-01-20
      • 1970-01-01
      • 1970-01-01
      • 2017-06-01
      • 2012-11-05
      • 1970-01-01
      相关资源
      最近更新 更多