我的每个4 machine learning models
大小为2GB
,总共8GB
。我一次收到100 requests
个请求。每个请求都在1sec
左右
我有一台15GB RAM
的机器。现在如果我增加Gunicorn中的number of workers
,总内存消耗会很高。所以我不能增加超过2的工人数量
所以我对此几乎没有问题:
share models or memory
? sync or async
考虑上述情况?preload
中使用Gunicorn
选项?我用它但它没有任何帮助。可能是我做错了。这是我正在使用的Flask代码 https://github.com/rathee/learnNshare/blob/master/agent_api.py
答案 0 :(得分:3)
使用gevent worker(或其他事件循环worker),而不是默认worker。默认同步工作程序处理每个工作进程一个请求。只要每个请求都是非阻塞的,异步工作者就会处理每个工作进程的无限数量的请求。
gunicorn -k gevent myapp:app
可以预见,您需要为此安装gevent:pip install gevent
。