我有使用Flask编写的Web应用程序。正如大家所建议的那样,我不能在生产中使用Flask。所以我想到了 Gunicorn with Flask 。
在Flask应用程序中,我正在加载一些机器学习模型。它们的总体尺寸为8GB。我的Web应用程序的并发性可以达到 1000个请求。机器的RAM是15GB 那么运行这个应用程序的最佳方法是什么?
答案 0 :(得分:31)
您可以与Gunicorn的多名工作人员或异步工作人员一起启动您的应用程序。
Flask server.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
Gunicorn与gevent async worker
gunicorn server:app -k gevent --worker-connections 1000
Gunicorn 1名工作者12个帖子:
gunicorn server:app -w 1 --threads 12
Gunicorn有4名工人(多处理):
gunicorn server:app -w 4
本帖中有关Flask并发性的更多信息:How many concurrent requests does a single Flask process receive?。
答案 1 :(得分:3)
最好的方法是使用前叉模式(preload_app=True)。这将在“主”进程中初始化您的代码,然后简单地派生工作进程来处理请求。如果您在Linux上运行并且假设模型是只读的,则OS足够智能,可以在所有进程之间重用物理内存。