Python中gunicorn部署问题如何解决

最近做 python server 的选型, gunicorn+meinheld/gevent 都不错,但在 nginx 下性能、错误率掉得有点厉害,远不如 nginx+uWSGI+gevent 稳定,请教下如何部署?

gunicorn -b :18003 -k egg:meinheld#gunicorn_worker  -w 9 mybottle:app 

#or

gunicorn -b :18003 -k gevent_pywsgi -w 9 mybottle:app

nginx.conf

    server {
        listen 8003;
        location / {
            proxy_pass http://127.0.0.1:18003;
        }
    }

谢谢!


Python中gunicorn部署问题如何解决

10 回复

Nginx 后面挂普通 gunicorn 呢?
gunicorn 最初的设计就是这样


我无法理解你的问题。

没有说明机子配置就直接 -w 9 合适么

另外 meinheld 在请求高的时候错误率确实会飙高,可以看看这个测评 https://blog.appdynamics.com/engineering/a-performance-analysis-of-python-wsgi-servers-part-2/

4 核,因为和问题无关就没有说明,另外 它这个评测 meinheld 是不开 keep-alive 的,我自己测试时没有这么多错误。

默认工作模式是阻塞调用,性能不成吧。

默认设计是 Nginx 在前面 buffer
gunicorn 只需要以最快速度和 Nginx 交换数据并处理请求就行,所以阻塞不会影响性能,这是 gunicorn 官方的说法

并不是,一旦 app 中有 block io 这个进程就阻塞了。

回复 mark 一下

digitalocean 有相关部署文章

nginx+gunicorn+gevent 是最稳定高效的组合

回到顶部