gunicorn不会同时处理同时请求

swo*_*p81 5 asynchronous worker gunicorn

我正在尝试使用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])
Run Code Online (Sandbox Code Playgroud)

然后我跑了gunicorn所以:

gunicorn -w 4 myapp:app -k gevent

当我打开两个浏览器选项卡并输入http://127.0.0.1:8000/它们并几乎同时发送请求时,请求似乎按顺序处理- 一个在5秒后返回,另一个在另外 5秒后返回.

问:我猜测睡眠不是友好的吗?但是有4个工人,所以即使工人的类型是"同步",两个工人应该同时处理两个请求?

Cra*_*sta 8

我刚刚遇到同样的事情,在这里提出了一个问题:要求不要分发给枪支工人.结果是,浏览器似乎序列化对同一页面的访问.我猜也许这有可能具有缓存性,即浏览器认为页面可以缓存,等到它加载发现它不是这样它会发出另一个请求等等.

  • 谢谢@CrazyCasta。我通过安装另一个浏览器并同时从两个单独的浏览器(chromium 和 firefox)发送请求来验证您的答案,并且这些请求确实得到并行服务。 (3认同)