如何在Ubuntu系统中通过supervisord将Celery worker配置为守护进程
问题原因及解决方案
导致启动报错的核心原因和修正方案如下:
- 路径解析问题:Supervisor运行时不支持bash环境的
~家目录占位符,所有路径必须写完整绝对路径 - 冗余操作冲突:你已经通过
directory参数指定了程序工作目录,不需要在command中额外执行cd命令 - 可选优化:新增supervisor侧的日志配置,方便后续排查运行问题
修正后的配置内容
替换/etc/supervisor/conf.d/celery.conf的全部内容为以下配置:
[program:celery] directory=/home/ubuntu/celery command=/home/ubuntu/.local/bin/celery -A batch.celery worker -f celery.logs --loglevel=INFO numprocs=1 autostart=true autorestart=true user=ubuntu stdout_logfile=/var/log/celery-worker.log stderr_logfile=/var/log/celery-worker-error.log stdout_logfile_maxbytes=50MB stdout_logfile_backups=3 stderr_logfile_maxbytes=50MB stderr_logfile_backups=3
配置生效操作
保存配置文件后执行以下命令重载配置并启动服务:
- 重载supervisor配置
sudo supervisorctl reread sudo supervisorctl update
- 启动celery服务并验证状态
sudo supervisorctl start celery sudo supervisorctl status celery
如果仍有异常,可查看/var/log/celery-worker-error.log日志定位具体问题。
内容的提问来源于stack exchange,提问作者Rubal Gulati
相关产品推荐
相关产品推荐

