Flask的一种启动方式和三种托管方式

1. 原生启动


Flask 支持使用原生的 app.run() 方法来启动应用程序。这种方法是最简单、最基本的启动方式,适用于开发环境和小型应用程序。

python 复制代码
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

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

以上代码定义了一个简单的 Flask 应用程序,其中一个路由 / 映射到了一个名为 hello_world() 的视图函数。在最后一行,我们通过 app.run() 方法启动了应用程序。

在默认情况下,app.run() 方法将监听 localhost:5000 地址,并在调试模式下运行。如果要在其他地址或端口上运行应用程序,可以在 app.run() 方法中传入参数:

python 复制代码
app.run(host='0.0.0.0', port=8080)

在生产环境中,我们通常不会使用原生的 app.run() 方法来启动 Flask 应用程序。这是因为它只能处理一个请求,而且性能较差。因此,在生产环境中,我们通常会使用其他的 Web 服务器来运行 Flask 应用程序。

2. gevent 启动


gevent 是一个基于协程的 Python 网络库,它可以实现高并发和异步网络 IO。使用 gevent 启动 Flask 应用程序可以提高应用程序的并发处理能力和性能。

python 复制代码
from gevent import monkey; monkey.patch_all()
from gevent.pywsgi import WSGIServer
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

if __name__ == '__main__':
    http_server = WSGIServer(('0.0.0.0', 8080), app)
    http_server.serve_forever()

以上代码中,我们首先通过 monkey.patch_all() 方法打补丁,使得 Flask 应用程序可以使用 gevent 进行异步 IO。然后,我们使用 WSGIServer 对象将 Flask 应用程序封装为一个 WSGI 应用程序,并在 serve_forever() 方法中启动了 Web 服务器。

3. tornado 启动


tornado 是一个流行的 Python Web 框架和异步网络库,与 gevent 类似,它也可以提高 Flask 应用程序的并发处理能力和性能。

python 复制代码
from tornado.wsgi import WSGIContainer
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

if __name__ == '__main__':
    http_server = HTTPServer(WSGIContainer(app))
    http_server.listen(8080)
    IOLoop.current().start()

4. waitress 启动


waitress 是一个轻量级的 Python Web 服务器,它可以与 WSGI 应用程序一起工作。使用 waitress 启动 Flask 应用程序可以提高应用程序的性能和稳定性。

python 复制代码
from waitress import serve
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

if __name__ == '__main__':
    serve(app, host='0.0.0.0', port=8080)

以上代码中,我们使用 serve() 方法启动了 waitress Web 服务器,并在其中将 Flask 应用程序作为参数传入。我们还可以通过 hostport 参数指定监听的地址和端口。

总结


本文介绍了 Flask 的四种启动方法:原生启动、gevent 启动、tornado 启动以及 waitress 启动。每种启动方法都有其优点和适用场景,除本文四种启动方式外,Flask还支持其他很多种启动方式和托管方式,开发者可以根据自己的需求进行选择。

相关推荐
用户12039112947263 分钟前
AIGC 时代,数据库终于可以“听懂人话”了:从零打造自然语言操作 SQLite 的完整实战
python·sqlite·aigc
Q_Q5110082853 分钟前
python+django/flask+vue农业电商服务系统
spring boot·python·pycharm·django·flask
帕巴啦5 分钟前
Python计算累积频率——Origin绘制累积频率图
python·绘图·origin·累积频率·python计算累积频率·origin绘制累积频率图
编程修仙11 分钟前
第九篇 Spring中的代理思想
java·后端·spring
aiopencode14 分钟前
iOS CPU 使用率深度分析,多工具协同定位高占用瓶颈的工程化方法
后端
Q_Q51100828514 分钟前
python+django/flask+vue的基于疫情防控管理系统的数据可视化分析系统
spring boot·python·django·flask·node.js
I'm Jie23 分钟前
告别重复编码!SpringBoot 字段变更(新旧值)日志工具类的规范化设计与优雅实现
java·spring boot·后端
生信大表哥35 分钟前
Claude Code / Gemini CLI / Codex CLI 安装大全(Linux 服务器版)
linux·python·ai·r语言·数信院生信服务器
开心猴爷38 分钟前
Bundle Id 创建与管理的工程化方法,一次团队多项目协作中的流程重构
后端
databook40 分钟前
用样本猜总体的秘密武器,4大抽样分布总结
后端·python·数据分析