- Published on
1.1.Flask 快速上手
- Authors

- Name
- xiaobai
1.概念与定位
1.1.WSGI 与 Flask
- Flask 基于 WSGI(Web Server Gateway Interface)标准,常与
Werkzeug(底层 WSGI 工具集)和Jinja2(模板引擎)一起使用。 - WSGI 更偏向同步阻塞模型;Flask 通过简单、灵活的扩展生态,适合快速构建中小型 Web 服务与站点。
1.2.与 FastAPI 的简要对比
- FastAPI 基于 ASGI,原生支持异步、高性能与自动文档;Flask 则以“微框架”著称,胜在生态广、学习成本低、扩展能力强。
- 选择建议:
- 高并发、严格的类型提示与自动 OpenAPI 文档:倾向 FastAPI。
- 快速原型、经典 Web(模板渲染)、成熟扩展生态:倾向 Flask。
2.安装与 Hello World
2.1.安装
pip install flask
2.2.最小可运行示例
from flask import Flask
app = Flask(__name__)
@app.get('/')
def hello():
return 'Hello, Flask!'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000, debug=True)
debug=True开启调试与自动重载。- 访问
http://127.0.0.1:5000/验证应用是否启动成功。
3.路由与请求响应
3.1.基础路由
@app.get('/ping')
def ping():
return {'message': 'pong'}
- Flask 原生支持返回字符串;返回字典时会自动转为 JSON 响应。
3.2.接收参数
- 路由参数(路径参数):
@app.get('/double/<int:num>')
def double(num: int):
return {'result': num * 2}
- 查询参数:
from flask import request
@app.get('/search')
def search():
q = request.args.get('q', '')
return {'q': q}
- 请求体(JSON):
from flask import request
@app.post('/echo')
def echo():
data = request.get_json(silent=True) or {}
return {'received': data}
4.Blueprint(模块化路由)
- Blueprint 用于将路由分组,便于团队协作与大型项目的结构化管理。
from flask import Blueprint
api = Blueprint('api', __name__, url_prefix='/api')
@api.get('/status')
def status():
return {'ok': True}
app.register_blueprint(api)
5.开发配置与自动重载
- 建议使用环境变量或配置文件管理
DEBUG、SECRET_KEY等:
import os
app.config.update(
DEBUG=os.getenv('FLASK_DEBUG', 'true').lower() == 'true',
SECRET_KEY=os.getenv('SECRET_KEY', 'dev-secret'),
)
6.同步阻塞与并发思考
- Flask 为 WSGI 应用,默认同步;若存在 CPU 密集或阻塞 I/O,可考虑:
- 通过
gevent/eventlet提升并发; - 借助反向代理(如 Nginx)与多进程服务(如
gunicorn -w 4)提升吞吐; - 将高并发任务迁移至队列/异步任务系统(如 Celery)。
- 通过
7.总结
- 以最小心智负担搭建 Web 服务,快速交付;
- 配合 Blueprint、配置管理与部署方案,可稳定支撑中等规模的后端应用。
