[TOC]
0x00 问题解决 1.使用Flash原生的app.run运行一个简易的http服务用来提供接口,出现请勿在生产环境中使用开发服务器,使用生产WSGI服务器的提示。 错误信息: WARNING: Do not use the development server in a production environment. Use a production WSGI server
问题原因: 由于原生的 app.run(host="0.0.0.0", port=80)
只适用于开发模式,因为它是单线程的,生产环境影响性能,替代方案是可以用 uWSGI 或者 pywsgi。
[TOC]
0x00 问题解决 1.使用Flash原生的app.run运行一个简易的http服务用来提供接口,出现请勿在生产环境中使用开发服务器,使用生产WSGI服务器的提示。 错误信息: WARNING: Do not use the development server in a production environment. Use a production WSGI server
问题原因: 由于原生的 app.run(host="0.0.0.0", port=80)
只适用于开发模式,因为它是单线程的,生产环境影响性能,替代方案是可以用 uWSGI 或者 pywsgi。
1 2 3 4 5 6 1.app.run 启动的是单线程服务,性能很低 2.pywsgi 服务器使用的是gevent的pywsgi模块,性能不错,配置也很简单,但是它只是把单线程改造成了单线程异步方式 3.uWSGI 性能最好,配置稍微比上面难一点,但是它是支持多进程、多线程、和多协程的方式,简直就是完美,所以我选择尝试使用uWSGI服务器来替代
解决办法: 从上面可知解决版本无非两种 pywsgi
与 uWSGI
.
1 2 3 4 5 6 7 pip install gevent from gevent import pywsgi server = pywsgi.WSGIServer(('0.0.0.0' , 80), app,) server.serve_forever()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 pip install uwsgi tee uwsgi.ini <<'EOF' [uwsgi] http = 0.0.0.0:80 chdir = /root/projectnamewsgi-file = manage.py callable = app processes = 4 threads = 10 daemonize = /app/logs/uwsgi.log pidfile = uwsgi.pid master = true EOF uwsgi --ini uwsgi.ini uwsgi --reload uwsgi.pid uwsgi --stop uwsgi.pid from app import create_app app = create_app() if __name_ == '__main__' : app.run(host="0.0.0.0" , port=80)