🖥️ 使用 Supervisor 后台运行 Celery Worker

Supervisor 是一款轻量级的进程管理工具,可用于后台运行 Celery 等服务,并实现自动启动、重启、日志记录等功能。


🧾 Step 1:创建 Supervisor 配置文件

在项目根目录或任意目录下,创建 supervisord.conf 配置文件:

[supervisord]
nodaemon=false
logfile=/home/ubuntu/xxx/xxx/logs/supervisord.log
pidfile=/home/ubuntu/xxx/xxx/supervisord.pid
logfile_maxbytes=50MB
logfile_backups=10

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///home/ubuntu/xxx/xxx/supervisor.sock

[unix_http_server]
file=/home/ubuntu/xxx/xxx/supervisor.sock   ; UNIX socket 文件用于控制指令交互

[program:celery]
command=celery -A celery_tasks worker -l info -c 2 -Q dev-celery
directory=/home/ubuntu/xxx/xxx
autostart=true
autorestart=true
stdout_logfile=/home/ubuntu/xxx/xxx/logs/celery.log
stderr_logfile=/home/ubuntu/xxx/xxx/logs/celery_err.log

📝 参数说明补充:

配置项 示例值 说明
logfile supervisord 日志文件路径 建议定期轮转
pidfile Supervisor 运行时 PID 文件 用于停止 supervisor 本身
command 启动 celery 的命令 可设置参数如并发数(-c)/指定队列(-Q)等
autostart / autorestart 是否开机启动 / 异常退出是否重启 推荐均设为 true
stdout_logfile 标准输出日志文件路径(可通过 tail 实时查看)
directory 项目主目录路径 celery 的工作目录,即实际运行目录

💡 注意:请根据你实际项目路径将 /home/ubuntu/xxx/xxx 替换为真实地址,否则 supervisor 启动会失败。


🧪 Step 2:启动 Supervisor 守护进程

使用 supervisord 指定配置文件运行:

supervisord -c /home/ubuntu/xxx/xxx/supervisord.conf

检查是否成功:

ps aux | grep supervisord

默认将后台运行,并自动启动配置中的 celery worker。


🧰 Step 3:Supervisord 监控管理(可选)

你可以使用 supervisorctl 命令来控制:

# 指定 .conf 文件进行管理
supervisorctl -c /home/ubuntu/xxx/xxx/supervisord.conf status

# 启动 celery
supervisorctl -c /home/ubuntu/xxx/xxx/supervisord.conf start celery

# 重启 celery
supervisorctl -c /home/ubuntu/xxx/xxx/supervisord.conf restart celery

# 停止 celery
supervisorctl -c /home/ubuntu/xxx/xxx/supervisord.conf stop celery

✅ 小贴士与建议

  • 若部署多个程序(如 celery worker 与 beat),可以加入多个 [program:x] 配置条目
  • 建议创建 logs/ 目录避免日志路径无效导致无法启动
  • 若服务未启动 / 未重启成功,请先 tail 日志排查错误:
tail -f /home/ubuntu/xxx/xxx/logs/celery.log
作者:freed  创建时间:2025-03-28 15:09
最后编辑:freed  更新时间:2025-03-28 15:10