Concurrency 如何使用Flask和Gunicorn获得1000个请求的并发性

Concurrency 如何使用Flask和Gunicorn获得1000个请求的并发性,concurrency,flask,machine-learning,gunicorn,Concurrency,Flask,Machine Learning,Gunicorn,我有4个机器学习模型,每个模型的大小2GB,即总共8GB。我一次收到大约100个请求。每个请求大约需要1秒 我有一台机器,内存15GB。现在,如果我增加Gunicorn中的工作人员数,总内存消耗会很高。因此,我不能将工人数量增加到2人以上。 因此,关于这一点,我有几个问题: 员工如何在他们之间共享模型或内存 考虑到上述情况,sync或async适合哪种类型的工作人员 如果是解决方案,如何使用Gunicorn中的preload选项?我用过,但没用。可能是我做得不对 这是我正在使用的烧瓶代码 使用g

我有
4个机器学习模型
,每个模型的大小
2GB
,即总共
8GB
。我一次收到大约100个请求。每个请求大约需要
1秒

我有一台机器,内存
15GB
。现在,如果我增加Gunicorn中的
工作人员数
,总内存消耗会很高。因此,我不能将工人数量增加到2人以上。
因此,关于这一点,我有几个问题:

  • 员工如何在他们之间共享模型或内存
  • 考虑到上述情况,
    sync或async
    适合哪种类型的工作人员
  • 如果是解决方案,如何使用
    Gunicorn
    中的
    preload
    选项?我用过,但没用。可能是我做得不对
  • 这是我正在使用的烧瓶代码

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

    gunicorn -k gevent myapp:app
    
    可以预见,您需要为此安装gevent:
    pip install gevent