徐高翔的个人网站

Flask生产环境部署

2016-12-15

软硬件环境

  • ubuntu 18.04 64bit
  • anaconda with python 3.6
  • flask
  • tornado

前言

Flask本身确实提供了web server的功能,但是非常弱,调试环境下用用没问题,但是在生产环境中就不太建议使用。flask官网上也明确指出了这一点。

While lightweight and easy to use, Flask’s built-in server is not suitable for production as it doesn’t scale well.

安装tornado

tornado 是一款开源的可伸缩、非阻塞式的web服务器和工具集,在高并发的应用场景中有不错的效果.我们就用它来部署flask。首先需要进行安装

1
pip3 install tornado

使用tornado

1
2
3
4
5
6
7
8
9
10
from tornado.wsgi import WSGIContainer
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
from flask import Flask

flask_app = Flask(__name__)

http_server = HTTPServer(WSGIContainer(flask_app))
http_server.listen(8888)
IOLoop.instance().start()

tornado的autoreload

特别是在代码调试过程中,我们希望在源码有改动时自动重启服务,省去不停的 ctrl+c 和重新启动的动作,这时候autoreload特性就派上用场了

1
2
3
4
5
6
7
8
9
10
11
12
13
from tornado.wsgi import WSGIContainer
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
from tornado import autoreload
from flask import Flask

flask_app = Flask(__name__)

http_server = HTTPServer(WSGIContainer(flask_app))
http_server.listen(8888)
ioloop = IOLoop.instance()
autoreload.start(ioloop)
ioloop.start()

参考资料

  1. http://flask.pocoo.org/docs/1.0/deploying/
  2. http://www.tornadoweb.org/en/stable/autoreload.html

推荐文章(由hexo文章推荐插件驱动)

使用支付宝打赏
使用微信打赏

请博主喝咖啡!