2011-07-22 31 views
0

我有一個Gunicorn服務器正在運行一個Django應用程序,該應用程序傾向於頻繁崩潰。不幸的是,當它發生崩潰時,所有的Gunicorn工人同時下山,默默繞過Django和django-sentry的伐木場。所有工作人員都會返回「內部服務器錯誤」,但仲裁人不會崩潰,因此supervisord不會將其註冊爲崩潰,因此不會重新啓動該進程。Gunicorn內部服務器錯誤

我的問題是,有沒有辦法掛鉤Gunicorn工作人員崩潰,並可能發送電子郵件或做記錄聲明?其次是有沒有辦法讓supervisord重新啓動只返回500的Gunicorn服務器?

在此先感謝。

+0

你可以在這裏粘貼任何日誌嗎? Gunicorn日誌和supervisord/gunicorn日誌?如果一切都是默認的,日誌形式supervisord應該在/ tmp – mrbox

+0

不幸的是我不能由於公司策略,但在/ tmp/supervisord中形成了日誌語句,但是當gunicorn工作人員從整個服務器不會崩潰。 –

回答

1

我強烈推薦使用zc.buildout。下面是使用插件Superlance爲supervisord與擴建一個例子:

[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/] 

哪會做HTTP請求每20秒,然後重新啓動過程中,如果它失敗。

http://pypi.python.org/pypi/collective.recipe.supervisor/0.16

+1

如果你還沒有使用zc.buildout,那麼你不需要使用它來運行superlance。請參閱他們的pypi頁面瞭解更多信息。 http://pypi.python.org/pypi/superlance –

+0

是的,superlance正是我所需要的。謝謝! –