处理 1000 个 Flask/Gunicorn Web 服务的并发请求

Swa*_*nil 5 python flask gunicorn

我对在 Python 中创建 Web 服务相当陌生。我已经成功创建了一个 Flask Web 服务并使用 Gunicorn 运行它(因为 Flask 的内置服务器不适合生产)。这就是我运行我的应用程序的方式(有 4 个工作节点)。

   gunicorn --bind 0.0.0.0:5000 My_Web_Service:app -w 4
Run Code Online (Sandbox Code Playgroud)

问题是,这一次只能处理 4 个请求。我希望它能够同时处理 1000 个潜在的请求。我应该使用多线程吗?还有其他选择/建议吗?

Dan*_*iel 5

阅读有关Workers的部分,您必须切换到异步工作程序,如果您的工作受 IO 限制,它可以处理数千个连接。不建议使用多于 CPU 的进程。

  • 嗨,所以我尝试使用这样的 gevent async worker:gunicorn --bind 0.0.0.0:5000 service:app -k gevent --worker-connections 1000 这有效,但它似乎仍然按顺序处理传入的请求。例如,当我同时传递 2 个请求并为每个请求记录时间时,我观察到该服务一次一个请求,并在第一个请求完成后开始服务另一个请求。 (3认同)
  • 我刚开始使用 Gunicorn 和 Gevent。我在 google 上搜索了有关创建异步工作线程的信息,一些链接推荐我使用 Gevent。我使用 Flask 创建了一个 Web 服务。我为 2 种不同类型的流程定义了 2 个端点。问题是,如果我尝试向两个端点发送请求,它会等待第一个请求处理和响应,然后在第一个请求完成后处理第二个请求。我认为它仍然在进行同步而不是异步。 (2认同)