背景
由于目前在用的Flask项目涉及到一部分依赖Windows的处理,还无法迁移到linux平台,那么在windows环境下,要怎么部署呢?
思路
根据Flask官网介绍,由于Flask内置的服务器性能不佳,推荐的主要的部署方式有如下几种:
上述这些部署方式,仅Tornado是支持在windows情况下部署的,配合上Nginx可以达到比较好的效果。可已参考Nginx与tornado框架的并发评测。
但是在实际使用中发现,tornado 的稳定性虽然很高,但是在tornado上部署Flask,并不会有异步的效果。实际上还是单进程阻塞运行的,即使在Flask中配置了threaded = True也无法实现多线程使用。
Flask多线程情况
配置启用多线程:
# manage.py
from flask_script import Server
server = Server(host="0.0.0.0", threaded=True)
在Flask中配置两条测试路由
import time
@main.route('/test')
def maintest():
return 'hello world'
@main.route('/sleep')
def mainsleep():
time.sleep(60)
return 'wake up'
先用浏览器访问\sleep:

随即立刻访问\test:

本文探讨了在Windows下部署Flask应用的策略,包括Flask多线程、Tornado+Flask的异步问题,以及在高并发场景下Flask与Nginx的组合表现。通过压力测试,得出结论:在并发较低时,Flask+Nginx+多服务器能有效提升性能,但大型项目建议迁移到Linux环境并采用推荐部署方式。
最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



