我正在尝试使用gunicorn及其异步工作者来处理长时间运行的请求,但我找不到任何可以使其正常运作的示例。我使用了这里的示例,但进行了微调以添加一个假延迟(休眠5秒)后才返回响应:
def app(environ, start_response):
data = "Hello, World!\n"
start_response("200 OK", [
("Content-Type", "text/plain"),
("Content-Length", str(len(data)))
])
time.sleep(5)
return iter([data])
然后我这样运行gunicorn:
gunicorn -w 4 myapp:app -k gevent
当我打开两个浏览器选项卡,并在两个选项卡中几乎同时输入http://127.0.0.1:8000/
并发送请求时,请求似乎被依次处理 - 一个请求在5秒后返回,另一个请求在另外的5秒后返回。
问:我猜想sleep不适用于gevent?但有4个工作进程,即使工作进程的类型是“同步”,也应该有两个工作进程同时处理两个请求吗?