celery不能以守护进程方式运行自己,需要借助一些一些工具守护进程。这里使用supervisor进程守护。
1,安装supervisor
pip install supervisor
supervisor不支持Python3,如果你使用虚拟环境,用的Python3,那就需要退出虚拟环境,使用Python2安装supervisor
2,配置supervisor
supervisor 安装完成之后,默认是没有配置文件的,但是我们也不需要向 uwsgi 一样自己创建配置文件。使用 echo_supervisord_conf 命令就可以生成一个 supervisor 的配置文件
echo_supervisord_conf > /home/ubuntu/supervisord.conf
/home/ubuntu/supervisord.conf 这是存放supervisor配置文件的路径
打开 supervisord.conf 文件,在文件的最后添加以下语句并保存:
command=/root/.virtualenvs/myblog/bin/celery -A celery_tasks.main worker -l info
directory=/home/ubuntu/blog/blog
stdout_logfile=/home/ubuntu/blog/blog/logs/celery.log
autostart=true
autorestart=true
第一行表示设置一个名为 project的 celery,我们可以通过这个名称来控制这个进程; 第二行表示程序运行的命令,在这里我们设置的是对应的虚拟环境下的celery 执行启动celery的命令; 第三行表示程序所在的目录; 第四行表示这个进程的日志文件路径; 第五行表示当 supervisord 启动时,该程序自动启动; 第六行表示当 superisord 为运行状态时,程序自动重启;
3,启动supervisor
首先,通过 supervisord 命令启动 supervisor:
sudo supervisord
然后再通过 supervisorctl 调用配置文件启动程序: 如提示Error: No config file found at default paths (/etc/supervisord.conf, /supervisor... 可以把supervisord.conf软链接到/etc/supervisord.conf
开启守护进程
sudo supervisorctl -c /home/ubuntu/supervisord.conf
如下表示成功开启
project RUNNING pid 4558, uptime 00:00:30
已经跑起来了
4,常用命令
sudo supervisorctl -c /home/ubuntu/supervisord.conf restart celery 重启celery进程
sudo supervisorctl -c /home/ubuntu/supervisord.conf start celery 开启celery进程
sudo supervisorctl -c /home/ubuntu/supervisord.conf stop celery 停止celery进程```