写了一个 Flask 的应用,但老是提示“不要在生产环境下使用”,于是将 Flask 应用迁移到 Uvicorn 应用。
Flask 2.0+ 原生支持
安装
pip install uvicorn fastapi
pip install flask[async] # Flask 2.0+ 官方方案
修改
# app.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
async def hello(): # 关键:使用 async 定义视图函数
return {"message": "Hello from Uvicorn!"}
# 支持混合使用同步/异步路由
@app.route("/sync")
def sync_route():
return "I'm synchronous but run in async worker"
运行
shell
uvicorn app:asgi_app --host 0.0.0.0 --port 8000 --reload
Python
# run_server.py
import uvicorn
if __name__ == "__main__":
uvicorn.run(
"app:asgi_app", # 应用导入路径
host="0.0.0.0",
port=8000,
reload=True, # 开发模式热重载
workers=4 # 生产环境建议设置
)
通过 ASGI 适配器以兼容老版本
安装
pip install uvicorn fastapi
pip install asgiref # 兼容旧版 Flask 的适配器
修改
# app.py
from flask import Flask
from asgiref.wsgi import WsgiToAsgi
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello from legacy Flask with Uvicorn!"
# 包装为 ASGI 应用
asgi_app = WsgiToAsgi(app)
运行
shell
uvicorn app:asgi_app --host 0.0.0.0 --port 8000 --reload
Python
# run_server.py
import uvicorn
if __name__ == "__main__":
uvicorn.run(
"app:app", # 应用导入路径
host="0.0.0.0",
port=8000,
reload=True, # 开发模式热重载
workers=4 # 生产环境建议设置
)
