windows 生产服务器下部署 Flask

本贴最后更新于 1610 天前,其中的信息可能已经时移俗易

场景描述

很多 python 工程师,都会用 flask 来开发、部署 Web 应用。但也有很多工程师就直接使用 app.run() 在生产环境上启动服务。

那可能会发现 Flask 用 app.run() 这种方式启动,有异常特别容易退出,而且性能很弱。

生产环境下,python 常见的 web 部署搭配是 nginx+gunicorn

但是这种搭配只适合在 Linux 环境下。关于这种搭配的配置方法网上有很多。反而在 windows 环境下该使用什么搭配来部署,网上说的比不多。而我们的项目由于某种特殊的原因就必须搭建在 windows 环境下,所以使用的部署方案是:Flask + Tornado+nginx

解决方案示例

flask 服务文件 flask_app.py

from flask import Flask
app = Flask(__name__)

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

安装 Tornado

pip install tornado

flask_app.py 目录下编写 Tornado 的 server.py 文件

from tornado.httpserver import HTTPServer
from tornado.wsgi import WSGIContainer
from flask_app import app
from tornado.ioloop import IOLoop

s = HTTPServer(WSGIContainer(app))
s.listen(8080) # 监听 8080 端口
IOLoop.current().start()

启动服务

当前目录下执行 python server.py 浏览器中访问 http://ip:8080 即可

python server.py

配置 nginx 反向代理

配置 nignx 反向代理,这样在浏览器中直接访问 www.test.com 即可

windows 下 nginx 的安装和使用还是很简单的,网上教程很多,这里就不多说了

http {   
    server {
        listen       80;
        server_name  www.test.com;
        charset     utf-8;         

        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass  http://ip:8080;
        }
     
  }
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    545 引用 • 672 回帖
  • Flask
    19 引用 • 9 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...