我正在尝试使用 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 秒后返回。
问:我猜睡眠不友好?但是有 4 个工作人员,所以即使工作人员的类型是“同步”,两个工作人员应该同时处理两个请求?