Gunicorn内服务器错误
我有一个运行Django应用的Gunicorn服务器,但它经常崩溃。可惜的是,当它崩溃时,所有的Gunicorn工作进程都会同时停止,而且不会记录任何日志,包括Django和django-sentry的日志。所有的工作进程都会返回“内部服务器错误”,但是管理进程(arbiter)并不会崩溃,所以supervisord不会把它当作崩溃来处理,也就不会重启这个进程。
我想问的是,有没有办法在Gunicorn工作进程崩溃时进行一些操作,比如发送邮件或者记录日志?另外,有没有办法让supervisord重启那些只返回500错误的Gunicorn服务器?
谢谢!
1 个回答
1
我非常推荐使用zc.buildout。下面是一个使用Superlance插件来配合supervisord和buildout的例子:
[supervisor]
recipe = collective.recipe.supervisor
plugins =
superlance
...
programs =
10 zeo ${zeo:location}/bin/runzeo ${zeo:location}
20 instance1 ${instance1:location}/bin/runzope ${instance1:location} true
...
eventlisteners =
Memmon TICK_60 ${buildout:bin-directory}/memmon [-p instance1=200MB]
HttpOk TICK_60 ${buildout:bin-directory}/httpok [-p instance1 -t 20 http://localhost:8080/]
这个例子每20秒会进行一次HTTP请求,如果请求失败,就会重启进程。
http://pypi.python.org/pypi/collective.recipe.supervisor/0.16