【问题标题】:Handle 1000 concurrent requests for Flask/Gunicorn web service处理 Flask/Gunicorn Web 服务的 1000 个并发请求
【发布时间】:2017-07-12 21:43:49
【问题描述】:

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

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

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

【问题讨论】:

    标签: python flask gunicorn


    【解决方案1】:

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

    【讨论】:

    • 当然!我试试看!
    • 嗨,所以我尝试像这样使用 gevent 异步工作者: gunicorn --bind 0.0.0.0:5000 service:app -k gevent --worker-connections 1000 这有效,但它似乎仍在处理依次传入的请求。例如,当我同时传递 2 个请求并为每个请求记录时间时,我观察到服务一次一个请求,并在第一个请求完成后开始为另一个请求提供服务。
    • 你明白gevent是如何工作的吗?你回答什么样的要求?你如何分析你的服务器?
    • 我是使用 Gunicorn 和 Gevent 的新手。我在 Google 上搜索了有关创建异步工作者的信息,并且一些链接建议我使用 Gevent。我已经使用 Flask 创建了一个 Web 服务。我为 2 种不同类型的进程定义了 2 个端点。问题是,如果我尝试向两个端点发送请求,它会等待第一个请求处理和响应,然后在第一个请求完成后处理第二个请求。我认为它仍然在做同步而不是异步。
    • 我面临同样的问题,但尚未解决。你解决了这个问题吗?
    猜你喜欢
    • 1970-01-01
    • 2018-08-24
    • 1970-01-01
    • 2016-05-05
    • 2020-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-08
    相关资源
    最近更新 更多