问题说明
警告信息:“WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.”这个警告信息表明当前的服务器环境仅适用于开发和测试,不应在生产环境中使用。
开发服务器(Development Server)是框架自带的轻量级服务器,方便开发者快速测试和调试应用。然而,它缺乏生产环境所需的安全性、稳定性和性能优化。因此,在部署到生产环境时,应该使用适合生产环境的WSGI服务器,如Gunicorn或uWSGI。
具体选择哪种 WSGI 服务器,可以参考:Gunicorn 和 uWSGI 的区别-CSDN博客
简单部署:如果你只需要一个简单的 WSGI 服务器,且不需要太多额外的功能,Gunicorn 是一个不错的选择。复杂配置:如果你需要更多的配置选项和功能,或者计划使用多种协议,那么 uWSGI 可能更适合你。代码
from flask import Flaskapp = Flask(__name__)@app.route('/')def hello_world(): return 'Hello, World!'if __name__ == '__main__': app.run(debug=True) # 开发服务器,适用于开发和测试
上述代码在开发环境中是完全正确的,但在生产环境中直接运行会导致性能和安全问题。因此会触发警告信息。
解决方法
1 使用Gunicorn来部署Flask应用
安装Gunicorn
pip install gunicorn
Flask示例代码
from flask import Flaskapp = Flask(__name__)@app.route('/')def hello_world(): return 'Hello, World!'# 仅在开发环境中使用if __name__ == '__main__': app.run(debug=True) # 仅用于开发环境
运行命令
gunicorn -w 4 -b 127.0.0.1:8000 myapp:app
参数说明
-w 4表示使用4个工作进程。-b 127.0.0.1:8000表示绑定到本地主机的8000端口。myapp:app表示应用实例,其中myapp是Python文件名,app是Flask实例。
2 使用 Uvicorn来部署Flask应用
Uvicorn 是一个高性能的 ASGI 服务器,它在 Windows 上的表现通常优于 Gunicorn。
安装 Uvicorn
pip install uvicorn
Flask示例代码 同上
启动 Uvicorn
uvicorn myapp:app --host 127.0.0.1 --port 8000 --workers 4
3 内置的 WSGI 服务器
在开发和测试环境中,在 Windows 系统上快速测试验证,可以使用这个简单的替代方案来启动您的 WSGI 应用,既 wsgiref
模块中的 make_server
函数。这是一个内置的 WSGI 服务器。
示例代码
使用 wsgiref
的 make_server
函数启动一个 WSGI 应用:
示例应用
def application(environ, start_response): status = '200 OK' response_headers = [('Content-type', 'text/plain')] start_response(status, response_headers) return [b"Hello, world!"]if __name__ == '__main__': from wsgiref.simple_server import make_server httpd = make_server('127.0.0.1', 8000, application) print("Serving on port 8000...") httpd.serve_forever()
运行命令
python app.py