Skip to main content
 首页 » 编程设计

python之django 与主管一起在生产中启动 celery 守护进程

2024年10月24日41jpfss

我在 /etc/supervisor/conf.d/myproject-celery.conf 中为主管创建了一个 conf 文件

我的配置文件如下所示:

[program:celery] 
command=/var/www/html/project/venv/bin/python  /var/www/html/project/manage.py celeryd --loglevel=INFO 
environment=PYTHONPATH=/var/www/html/project 
directory=/var/www/html/project 
user=www-data 
numprocs=1 
stdout_logfile=/var/log/celeryd.log 
stderr_logfile=/var/log/celeryd.log 
autostart=true 
autorestart=true 
startsecs=10 
stopwaitsecs = 600 
priority=998 

在我的产品中,我想开始使用 celery 。为此我正在做

supervisord -c /etc/supervisor/conf.d/myproject-celery.conf 

当我这样做时它说

Error: .ini file does not include supervisord section 

这里有什么问题?

请您参考如下方法:

看起来您在配置文件中缺少 [supervisord] 部分,但这可能是因为您没有加载主 conf 文件

参见 docs

您不应该使用 -c 和 conf.d 文件启动 supervisord - 该文件夹中的文件通常会自动加载。通常,-c 是为您在普通目录以外的其他地方创建的 conf 保留的。

如果你不使用 -c 启动 supervisord,它应该加载你的 /etc/supervisor/supervisor.conf 文件

您的 conf 文件应如下所示:

; supervisor config file 
 
[unix_http_server] 
file=/var/run/supervisor.sock   ; (the path to the socket file) 
chmod=0700                       ; sockef file mode (default 0700) 
 
[supervisord] 
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log) 
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid) 
childlogdir=/var/log/supervisor            ; ('AUTO' child log dir, default $TEMP) 
 
; the below section must remain in the config file for RPC 
; (supervisorctl/web interface) to work, additional interfaces may be 
; added by defining them in separate rpcinterface: sections 
[rpcinterface:supervisor] 
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface 
 
[supervisorctl] 
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket 
 
; The [include] section can just contain the "files" setting.  This 
; setting can list multiple files (separated by whitespace or 
; newlines).  It can also contain wildcards.  The filenames are 
; interpreted as relative to this file.  Included files *cannot* 
; include files themselves. 
 
[include] 
files = /etc/supervisor/conf.d/*.conf 

如您所见,它会自动加载 conf.d 文件夹中的所有 conf 文件