V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hhhhhh123
V2EX  ›  程序员

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

  •  
  •   hhhhhh123 · 2022-08-02 08:58:42 +08:00 · 911 次点击
    这是一个创建于 842 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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
    
    vincent441
        1
    vincent441  
       2022-08-02 09:22:47 +08:00
    hhhhhh123
        2
    hhhhhh123  
    OP
       2022-08-02 09:30:36 +08:00
    @vincent441 他好像是使用 sync 出了问题,然后推荐 gevent,eventlet 异步模式,我 sync 模式是完全 ok 的, 但是 gevent,eventlet 模式不行.
    vincent441
        3
    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
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   968 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:40 · PVG 05:40 · LAX 13:40 · JFK 16:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.