参考链接: http://rfyiamcool.blog.51cto.com/1030776/1276364/
http://www.cnblogs.com/nanrou/p/7026789.html
前言
gunicorn 是支持 wsgi 协议的 http 服务器, gevent 只是它支持的模式之一, 是为了解决 django,flask 这些 web 框架自带 wsgi server 性能低下的问题. 自带的 Web server 更多的是测试用途, 线上发布时, 最好使用高性能的 wsgi server 或者是联合 nginx 做 uwsgi
gunicorn 的运行方式:
gunicorn wsgi:application
其中 wsgi 就是 wsgi.py 文件, application 就是那个 wsgifunc 的名字, 默认端口是 8000
如果要监听别的端口
gunicorn -b 127.0.0.1:8090 wsgi:application
在多核服务器上, 为了支持更多的并发访问并充分利用资源, 可以使用更多的 gunicorn 进程
gunicorn -w 8 wsgi:application
这样, 就可以启动 8 个进程同时处理 HTTP 请求, 提供系统的使用效率及性能
- gunicorn wsgi:application
- #8 个 worker
- gunicorn -w 8 wsgi:application
- # 指定端口号
- gunicorn -w 8 -b 0.0.0.0:8888 wsgi:application
- #unix socket
- gunicorn -w 8 --bind unix:/xx/mysock.sock wsgi:application
- # 使用 gevent 做异步 (默认 worker 是同步的)
- gunicorn -w 8 --bind 0.0.0.0:8000 -k 'gevent' wsgi:application
- # 选项挺多, 看文档或者使用 --help 都可以查看
- --log-level=DEBUG
- --timeout=100
BUT,gunicorn 默认使用同步阻塞的网络模型 (-k sync), 对于大并发的访问可能表现不够好, 可以使用 gevent 或 meinheld
- # gevent
- gunicorn -k gevent code:application
- # meinheld
- gunicorn -k egg:meinheld#gunicorn_worker code:application
也可以通过 -c 参数传入一个配置文件实现
---------------------
来源: http://www.bubuko.com/infodetail-2891648.html