Django Supervisord fastcgi配置(supervisord.conf) - 立即退出

时间:2012-03-14 01:08:42

标签: django configuration fastcgi supervisord

我正在尝试编写一个supervisord.conf来启动django fastcgi进程。唯一的问题是,当我执行我的fastcgi命令时,它会产生一个fastcgi进程并立即显示在主管中为“EXITED”。 (这有点击败主管的意思)

主管进程是否有某种方式可以意识到django fastcgi进程确实在运行,但它在后台?我正在挖掘所有的supervisord配置参数,似乎这应该是可能的(也许它可以以某种方式根据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-supervisor在Django上下文中使用变量创建配置文件。出于此示例的目的,像{{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

感谢阅读。任何建议都非常感谢。

1 个答案:

答案 0 :(得分:4)

尝试不强制django作为守护进程运行。根据主管docs

  

计划在主管下运行的程序不应该守护进程   他们自己。相反,它们应该在前台运行。他们应该   不要从它们开始的终端分离。