Gunicorn上的异步工作者似乎在阻止

Rom*_*lus 4 gevent flask gunicorn

我正在使用带有gunicorn服务器和gevent worker类的Flask应用程序,根据gunicorn文档,该类是一个异步worker。但是,当我与一个工作人员一起启动gunicorn并尝试提出一个较长的请求时(我sleep(10)在route函数中添加了,但实际上在处理大量上载时也会发生这种情况),直到上一个请求完成之前,我无法提出任何请求。它的行为就像是同步工作器一样,一次只有一个请求。

这是正常现象吗?我是否缺少有关同步与异步工作程序的信息?

Sea*_*ira 5

如果您不进行猴子补丁sleep(或使用gevent非阻塞版本sleep),则阻塞的工作程序会阻塞整个事件循环

无论是打电话gevent.monkey.patch_all(或更具体gevent.monkey.patch_time更换您的来电time.sleepgevent.sleep