flask默认werkzeug服务器不支持高并发,生产环境必须替换为gunicorn等wsgi服务器;推荐使用gunicorn -w 4 -k gevent配合monkey.patch_all()实现协程级并发,适用于io密集型场景。

Flask本身不支持高并发,得换运行时
Flask默认的Werkzeug开发服务器是单线程、单进程的,flask run 启动后连10个并发请求都可能卡住。生产环境必须替换为支持异步或并发模型的WSGI服务器。
常见选择有:gunicorn(多进程+可配多线程)、uWSGI(灵活但配置复杂)、hypercorn 或 uvicorn(如果用 Flask 2.3+ + async def 路由)。但注意:Flask原生异步支持有限——只有路由函数能声明为 async,中间件、before_request 等仍同步执行。
-
gunicorn最稳妥:用-w 4 -k gevent启动,靠gevent打补丁实现协程级并发,适合IO密集型API - 别直接
pip install gevent就跑,要确保所有依赖(比如数据库驱动)兼容gevent,否则会静默阻塞 - 用
uvicorn --workers 4 --host 0.0.0.0:5000 --app app:app启动前,确认你的 Flask 版本 ≥ 2.3 且没在扩展里调用阻塞式time.sleep()或requests.get()
数据库连接必须池化,且别在请求中新建连接
每个请求都 sqlite3.connect() 或 psycopg2.connect() 会导致连接数爆炸、文件句柄耗尽,错误常表现为 OperationalError: too many clients already 或 ConnectionRefusedError。
用 SQLAlchemy 时,create_engine 必须设 pool_size 和 max_overflow,且全局只创建一次引擎实例:
engine = create_engine(
"postgresql://user:pass@db:5432/app",
pool_size=10,
max_overflow=20,
pool_pre_ping=True, # 自动检测失效连接
)
- 别在
@app.route函数里写engine.connect(),改用sessionmaker绑定请求生命周期 - 用
flask-sqlalchemy的话,确保SQLALCHEMY_ENGINE_OPTIONS配了连接池参数,而不是只靠默认值 - 如果用
asyncpg或aiomysql,Flask 原生不兼容——得换FastAPI,或者自己用loop.run_in_executor包装阻塞调用(但收益有限)
避免在请求处理中做重CPU或长IO操作
Flask 路由函数一旦开始执行,就占着 worker 进程/线程,直到返回。像生成PDF、压缩大文件、调用外部HTTP服务这些操作,会把整个并发能力拖垮。
- 同步场景下,用
celery+redis或rabbitmq拆出耗时任务,API立即返回任务ID - 别用
threading.Thread在请求里启新线程——GIL没用,还增加调度开销;更别用os.system()或subprocess.run() - 调用第三方API时,务必设
timeout:比如requests.get(url, timeout=(3, 10)),否则一个慢接口会让整个worker卡死 - 日志级别别设成
DEBUG上线,大量app.logger.debug(...)写磁盘会成为瓶颈
静态文件和JSON序列化容易被忽略的性能点
很多人以为“API不传静态文件”,但其实 Swagger UI、前端打包后的 index.html、甚至健康检查的 /health 返回体,都会走 Flask 的响应构造流程。
-
jsonify()默认用 Python 内置json模块,比ujson或orjson慢2–5倍;可通过app.json = OrjsonProvider(app)替换(需安装orjson) - 别在每次请求里拼接大字符串再
jsonify({"data": huge_list}),先用orjson.dumps()序列化,再构建Response - 用
send_from_directory()传前端资源时,加max_age=31536000让浏览器缓存,减少重复请求 - 启用 Gzip:Flask 不内置,得加
flask-compress扩展,但注意它对小响应(
Flask 做高并发 API 的核心不是“怎么写路由”,而是“怎么不让路由堵住后面所有请求”——连接池、运行时、IO隔离这三点漏掉任意一个,压测时 QPS 都会断崖下跌。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











