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



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

gunicorn --bind 0.0.0.0:5000 My_Web_Service:app -w 4

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

阅读有关工作线程的部分,您必须切换到异步工作线程,如果您的工作是 IO 绑定的,它可以处理数千个连接。不建议使用比 CPU 更多的进程。

我会从 Flask 切换到 FastAPI,并将其与异步 IO 或(如果无法为您的所有函数找到非阻塞版本(与多处理池(不是多线程,它仍然会被 GIL 阻塞,因此速度稍慢(结合使用。

在生产服务器中,gunicorn可能仍然是最好的进程管理器,但由于 FastAPI 需要 ASGI,您需要将其与 uvicorn worker 结合使用。

最新更新