2012-03-14 1 views
3

django fastcgiプロセスを開始するためのsupervisord.confを作成しようとしています。唯一の問題は、fastcgiコマンドを実行するとfastcgiプロセスが生成され、スーパーバイザにすぐに「EXITED」と表示されることです。 (これはスーパーバイザのポイントを打ち負かします)Django Supervisord fastcgi設定(supervisord.conf) - すぐに終了する

django fastcgiプロセスは実際に実行されているがバックグラウンドにあるという事実をスーパーバイザプロセスが認識できる方法はありますか?私はsupervisord config paramsのすべてを掘り下げていましたが、これは可能なはずです(おそらく、これはpidファイルや何かに基づいて決めることができます)が、ドキュメントでは少し失われてしまいました。

$ ./manage.py supervisor status 
celerybeat      RUNNING pid 12575, uptime 0:01:17 
celerycam      RUNNING pid 12573, uptime 0:01:17 
celeryd       RUNNING pid 12572, uptime 0:01:17 
django       EXITED  Mar 13 07:57 PM 
runserver      RUNNING pid 12574, uptime 0:01:17 

注:私は実際にDjangoコンテキストで変数を使用して設定ファイルを作成するためにdjango-supervisorを使用しています。この例の目的のために、{{PYTHON}}や{{settings.VIRTUALENV_ROOT}}のような変数は、明白なパスによって単純に設定されます。通常のsupervisor.confファイルと同様に機能するはずです。

以下は私のsupervisord.confファイルです。

$ more supervisord.conf 
[supervisord] 
logfile={{ settings.VIRTUALENV_ROOT }}/log/supervisord-jj.log 
logfile_maxbytes=50MB 
logfile_backups=15 
pidfile={{ settings.VIRTUALENV_ROOT }}/var/run/supervisord-jj.pid 

[program:celeryd] 
command={{ PYTHON }} {{ PROJECT_DIR }}/manage.py celeryd 

[program:celerycam] 
command={{ PYTHON }} {{ PROJECT_DIR }}/manage.py celerycam 

[program:runserver] 
{% if settings.DEBUG %} 
exclude=false 
{% else %} 
exclude=true 
{% endif %} 

[program:django] 
command={{ PYTHON }} {{ PROJECT_DIR }}/manage.py runfcgi 
     method=threaded daemonize=true 
     outlog={{ settings.VIRTUALENV_ROOT }}/log/django-fcgi.log 
     socket={{ settings.VIRTUALENV_ROOT }}/var/run/django-run.socket 
     pidfile={{ settings.VIRTUALENV_ROOT }}/var/run/django.pid 

[program:autoreload] 
exclude=true 

お読みいただきありがとうございます。どんなアドバイスも大歓迎です。

答えて

4

djangoをデーモンとして実行することなく試してみてください。

監督の下で実行されることを意図するプログラムが 自体をデーモン化しないでください。スーパーバイザ docsあたり。代わりに、フォアグラウンドで実行する必要があります。 は、開始された端末から切り離すべきではありません。

関連する問題