Python gunicorn + worker_class 除了默认 sync,像 gevent, eventlet 都无法使用.. [换区]

2022-08-02 08:58:42 +08:00
 hhhhhh123
gunicorn -b 0.0.0.0:5000 app:app --worker-class gevent --timeout 120

我只有使用 worker-class sync 我才能请求成功,其他模式就是 等将近一分钟才能返回 502 Bad Gateway ,代码也没有报错。这问题到底在哪???

我目前推测是 使用 gevent 或 eventlet 被阻塞了,一直没有成功运行,但是也感觉不是这样 很头大

下面是 gevent 模式运行, 一直卡在这, 如果是 sync 模式,我代码中的打印信息好歹会打印。所以我推测是 阻塞,但是不知道为啥........

[2022-08-01 10:12:11 +0000] [3170259] [INFO] Starting gunicorn 20.1.0
[2022-08-01 10:12:11 +0000] [3170259] [INFO] Listening at: http://0.0.0.0:5000 (3170259)
[2022-08-01 10:12:11 +0000] [3170259] [INFO] Using worker: gevent
[2022-08-01 10:12:11 +0000] [3170260] [INFO] Booting worker with pid: 3170260
952 次点击
所在节点    程序员
3 条回复
vincent441
2022-08-02 09:22:47 +08:00
hhhhhh123
2022-08-02 09:30:36 +08:00
@vincent441 他好像是使用 sync 出了问题,然后推荐 gevent,eventlet 异步模式,我 sync 模式是完全 ok 的, 但是 gevent,eventlet 模式不行.
vincent441
2022-08-02 10:05:49 +08:00
我在 uwsgi 中加上了 猴子补丁,然后 使用 gevent 模式启动了,正常的
wsgi.py
from gevent import monkey
monkey.patch_all()

启动命令:gunicorn -c gnc_config.py <project_name>.wsgi:application

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/870108

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX