gunicorn 上的异步工作者似乎阻塞了

Async worker on gunicorn seems blocking

我正在使用带有 gunicorn 服务器和 gevent worker class 的 Flask 应用程序,根据 the gunicorn documentation,它是一个异步 worker。但是,当我用一个 worker 启动 gunicorn 并尝试发出一个长请求时(我在路由函数中添加了 sleep(10),但实际上在处理大量上传时也会发生这种情况),我无法发出任何请求,直到上一个完成了。它的行为就像一个同步工作者,一次一个请求。

这是正常行为吗?我是否遗漏了有关同步和异步工作者的信息?

如果你不使用猴子补丁 sleep(或使用 geventnon-blocking version of sleep),那么阻塞 的 worker 会阻塞整个事件循环.

要么调用gevent.monkey.patch_all (or more specifically gevent.monkey.patch_time) or replace your call to time.sleep with gevent.sleep