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