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

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

  •  
  •   hhhhhh123 · 117 天前 · 397 次点击
    这是一个创建于 117 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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  
       117 天前
    hhhhhh123
        2
    hhhhhh123  
    OP
       117 天前
    @vincent441 他好像是使用 sync 出了问题,然后推荐 gevent,eventlet 异步模式,我 sync 模式是完全 ok 的, 但是 gevent,eventlet 模式不行.
    vincent441
        3
    vincent441  
       117 天前
    我在 uwsgi 中加上了 猴子补丁,然后 使用 gevent 模式启动了,正常的
    wsgi.py
    from gevent import monkey
    monkey.patch_all()

    启动命令:gunicorn -c gnc_config.py <project_name>.wsgi:application
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1187 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 19:18 · PVG 03:18 · LAX 11:18 · JFK 14:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.