在Virtualenv上有一个Django项目,尝试将Celery配置为与CentOS 7服务器上的Supervisord配合使用,本文介绍CentOS 7中安装Supervisor和Celery及使用Supervisord管理Celery程序,可先参考Linux下Supervisor的使用。
安装Celery
在你的Virtualenv上,使用pip命令安装celery:
$ pip install celery
在CentOS 7中安装Supervisor
要在CentOS 7系统中安装Supervisor,你需要使用命令添加的epel存储库:
$ sudo yum -y install epel-release
然后从epel安装supervisor:
$ sudo yum -y install supervisor
该服务可以使用systemd进行管理,名称是supervisord。
使用Supervisord管理Celery程序
在使用supervisord做任何有用的事情之前,你需要在其配置中添加至少一个程序部分,程序部分将定义在调用supervisord命令时运行和管理的程序,默认情况下,Supervisor配置为读取/etc/supervisord.d目录下的所有配置文件,我将把我的celery配置文件放在/etc/supervisord.d/celery.ini上,而不是修改supervisord.conf文件,其内容如下所示:
# cat /etc/supervisord.d/celery.ini
[program:opalquickcelery]
command=/srv/venv/bin/celery worker -A opalquick --loglevel=INFO
directory=/srv/demo
user=shockwave
numprocs=1stdout_logfile=/var/log/celery/mail_beat.log
stderr_logfile=/var/log/celery/mail_beat.logautostart=true
autorestart=truepriority=999
说明:
command: This is the command to be executed when you start supervisord daemon
注:这是启动supervisord守护进程时要执行的命令。
一旦完成所有更改,然后启动supervisord守护进程:
# systemctl start supervisord
如果检查其状态,则应该看到在我们的配置文件上指定的命令已执行:
# systemctl status supervisord
supervisord.service - Process Monitoring and Control Daemon
Loaded: loaded (/usr/lib/systemd/system/supervisord.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2019-02-28 10:24:09; 26min ago
Process: 1879 ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf (code=exited, status=0/SUCCESS)
Main PID: 1882 (supervisord)
CGroup: /system.slice/supervisord.service
├─1882 /usr/bin/python /usr/bin/supervisord -c /etc/supervisord.conf
├─1884 /srv/venv/bin/python /srv/venv/bin/celery worker -A opalquick --loglevel=INFO
Feb 28 10:24:09 ns2.rafikihost.com systemd[1]: Starting Process Monitoring and Control Daemon...
Feb 28 10:24:09 ns2.rafikihost.com systemd[1]: Started Process Monitoring and Control Daemon.
Supervisor还提供了一个名为supervisorctl的命令行工具,它允许你控制当前由supervisord管理的进程:
# supervisorctl status opalquickcelery
opalquickcelery RUNNING pid 1884, uptime 10:29:24
要使用supervisorctl停止该过程,请使用:
# supervisorctl stop
要重新启动,请使用:
# supervisorctl restart
相关主题