我正在尝试使用 Gunicorn 及其异步工作人员来服务长时间运行的请求,但我找不到任何可以开始工作的示例。我用了这个例子here http://gunicorn.org/但在返回响应之前进行了调整,添加了一个假延迟(休眠 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 秒后返回,另一个在 1 秒后返回further5秒。
问:我猜 sleep 对 gevent 不友好?但是有 4 个工作人员,因此即使工作人员的类型是“同步”,两个工作人员也应该同时处理两个请求吗?
我刚刚遇到了同样的事情,在这里提出一个问题:请求未分配给gunicorn工作人员 https://stackoverflow.com/questions/23038678/requests-not-being-distributed-across-gunicorn-workers。结果是,浏览器似乎序列化了对同一页面的访问。我猜测这可能与可缓存性有关,即浏览器认为该页面可能是可缓存的,等到加载时发现它不是可缓存的,因此它会发出另一个请求,依此类推。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)