如何在多线程模式下使用Gunicorn运行Flask
machine-learning
python
6
0

我有用Flask编写的Web应用程序。正如每个人的建议,我不能在生产中使用Flask。所以我想到了带有FlaskGunicorn

在Flask应用程序中,我正在加载一些机器学习模型。这些总大小为8GB。我的Web应用程序的并发性可以达到1000个请求 。机器的RAM为15GB。
那么,运行此应用程序的最佳方法是什么?

参考资料:
Stack Overflow
收藏
评论
共 2 个回答
高赞 时间 活跃

最好的办法是使用前叉模式( preload_app = True )。这将在“主”进程中初始化您的代码,然后简单地派生工作进程来处理请求。如果您在Linux上运行并且假设模型是只读的,则OS足够智能,可以在所有进程之间重用物理内存。

收藏
评论

您可以由Gunicorn的多个工作人员或异步工作人员启动您的应用程序。

烧瓶server.py

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run()

与gevent异步工作者的Gunicorn

gunicorn server:app -k gevent --worker-connections 1000

Gunicorn 1个工作者12个线程:

gunicorn server:app -w 1 --threads 12

具有4个工人的Gunicorn(多处理):

gunicorn server:app -w 4

这篇文章提供了更多关于Flask并发的信息: 一个Flask进程收到多少个并发请求?

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号