【问题标题】:How to get a concurrency of 1000 requests with Flask and Gunicorn [closed]如何使用 Flask 和 Gunicorn 获得 1000 个请求的并发 [关闭]
【发布时间】:2016-03-10 11:01:48
【问题描述】:

我每个 4 machine learning models 的大小为 2GB,即总共有 8GB。我一次收到大约100 requests 的请求。每个请求都占用1sec
我有一台机器有15GB RAM。现在,如果我在 Gunicorn 中增加 number of workers,总内存消耗会很高。所以我不能将工人人数增加到 2 人以上。
所以我对此有几个问题:

  1. 工人如何在他们之间share models or memory
  2. 哪种类型的工人适合,sync or async 考虑到上述情况?
  3. 如果是解决方案,如何在Gunicorn 中使用preload 选项?我使用它,但它没有帮助。可能是我做错了。

这是我正在使用的 Flask 代码
https://github.com/rathee/learnNshare/blob/master/agent_api.py

【问题讨论】:

    标签: concurrency flask machine-learning gunicorn


    【解决方案1】:

    使用 gevent 工作者(或其他事件循环工作者),而不是默认工作者。默认同步工作者处理每个工作者进程的一个请求。只要每个请求都是非阻塞的,异步工作者就可以为每个工作者进程处理无限数量的请求。

    gunicorn -k gevent myapp:app
    

    可以预见,您需要为此安装 gevent:pip install gevent

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-20
      • 2020-04-03
      • 2016-05-05
      • 2017-12-20
      • 2018-08-24
      • 2018-01-31
      • 2016-04-15
      相关资源
      最近更新 更多