上一篇
Flask框架一般用什么服务器,怎么选最合适
- 云服务器
- 2026-07-24
- 13
Flask 使用的服务器
Flask 本身不包含用于生产环境的服务器,它只是一个基于 Werkzeug 的 Web 框架,在不同场景下,Flask 会使用不同的服务器来运行应用。

- 开发环境:Flask 内置的 Werkzeug 开发服务器(通过 flask run 或 app.run() 启动)。
- 生产环境:需要搭配独立的 WSGI 服务器,如 Gunicorn、uWSGI、Waitress 等。
不同服务器的对比
| 服务器 | 类型 | 适用场景 | 特点 |
|---|---|---|---|
| Werkzeug | 开发 / 调试 | 本地开发、测试 | 自动重载、错误调试友好,但性能低且不安全,不适合生产 |
| Gunicorn | 纯 Python WSGI | 生产环境 / 高并发 | 简单易用,多 worker 进程,支持多种 worker 类型(同步、异步等) |
| uWSGI | 高性能 WSGI | 生产环境 / 大规模部署 | 配置灵活,性能优秀,可结合 Nginx 使用 |
| Waitress | 纯 Python WSGI | 生产环境 / Windows | 跨平台,无需额外依赖,适合 Windows 或不想用 C 扩展的场景 |
| Gevent / Eventlet | 异步 WSGI | 高并发 I/O 密集型 | 基于协程,配合 Gunicorn 的 worker 类型使用 |
常见使用方式
- 开发:直接执行 flask run 或 python app.py,Flask 会启动 Werkzeug 服务器。
- 生产部署(Linux):使用 gunicorn -w 4 myapp:app 启动。
- 生产部署(Windows / 跨平台):使用 waitress-serve --port=8000 myapp:app。
- 高性能需求:可以使用 uwsgi --http :8000 --wsgi-file myapp.py --callable app,并配合 Nginx 反向代理。
- Nginx 能高效处理静态文件(CSS、JS、图片等),避免 Gunicorn 处理这些请求浪费资源。
- Nginx 可以承担 SSL/TLS 加密、负载均衡、请求限流、日志记录等任务,减轻 Gunicorn 的压力。
- 直接暴露 Gunicorn 到公网存在安全风险,Nginx 能提供额外的安全过滤和防护。

小结
Flask 本身不提供生产级服务器,Werkzeug 服务器仅用于开发,生产环境推荐使用 Gunicorn(Linux)或 Waitress(Windows),配合 Nginx 反向代理以提升性能与安全性。

相关问题与解答
Flask 开发服务器和生产服务器能混用吗?
不能直接混用。
Flask 自带的 Werkzeug 开发服务器设计目的是方便调试,它性能低、安全性差(如默认单线程、无防护机制),只适合本地开发,生产环境必须使用专用的 WSGI 服务器(如 Gunicorn、uWSGI、Waitress),它们能处理高并发、稳定运行,并支持配置 worker 数量、超时等参数。
使用 Gunicorn 部署 Flask 时,为什么还需要 Nginx?
Nginx 作为反向代理负责静态资源和高并发处理,而 Gunicorn 只负责运行 Python 应用。