- 安装配置
pip install supervisor
supervisor不支持python3,所以创建python 2.7的虚拟环境,目前两个虚拟环境(当前文章虚拟环境采用anaconda):
- (envDjango):python=3.6;django=2.1;djcelery
- (envSupervisor):python=2.7;supervisor
envDjango环境下djcelery已测试通过,详情见:
……
在虚拟环境envSupervisor下,执行如下Linux shell命令:
#安装supervisor
pip install supervisor
#通过echo_supervisord_conf命令得到supervisor配置模板
echo_supervisord_conf > /etc/supervisord.conf
#编辑supervisord.conf,修改最后两行:
vim supervisord.conf
[include]
files = sv.ini
#创建/etc/sv.ini文件:
touch /etc/sv.ini
#编辑sv.ini文件,按下方说明
vim sv.ini
- woker和beat进程配置讲解
配置supervisor守护进程来启动celery,启动worker与beat进程
worker:执行任务的消费者,通常会在多台服务器运行多个消费者来提高执行效率。
beat:任务调度器,Beat进程会读取配置文件的内容,周期性地将配置中到期需要执行的任务发送给任务队列。 Celerybeat会保持运行, 一旦到了某一定时任务需要执行时, Celerybeat便将其加入到queue中. 不像worker进程, Celerybeat只有需要一个即可.
- 项目配置文件
sv.ini
[program:celerywork]
#运行目录下执行命令,将虚拟环境下python全路径指出
command=/root/anaconda3/envs/envDjango/bin/python manage.py celery worker -l info
#指定运行目录
directory=/home/PycharmProjects/DjangoTest
#输出日志
stdout_logfile=/home/PycharmProjects/DjangoTest/logs/celery_work.log
stdout_logfile_maxbytes=1MB #默认最大1M
stdout_logfile_backups=10 #日志文件备份数,默认为10
#启动设置
numprocs=1 #进程数
autorestart=true #是否自动重启
#错误日志
redirect_stderr=true #为true表示禁止监听错误
[program:celerybeat]
command=/root/anaconda3/envs/envDjango/bin/python manage.py celery beat -l info
directory=/home/PycharmProjects/DjangoTest
stdout_logfile=/home/PycharmProjects/DjangoTest/logs/celery_beat.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
autorestart=true
redirect_stderr=true
- 启动和关闭supervisor
#启动supervisor输入如下命令,使用具体的配置文件执行:
supervisord -c supervisord.conf
#关闭supervisord需要通过supervisor的控制器:
supervisorctl -c supervisord.conf shutdown
#重启supervisord也是通过supervisor的控制器:
supervisorctl -c supervisord.conf reload
- 安装时可能遇到的错误信息
发生如下错误,是因为supervisor不支持python3,按照上述步骤创建两个虚拟环境即可。
Error:
(envDjango) [root@localhost logs]# pip install supervisor
Collecting supervisor
Using cached https://files.pythonhosted.org/packages/44/60/698e54b4a4a9b956b2d709b4b7b676119c833d811d53ee2500f1b5e96dc3/supervisor-3.3.4.tar.gz
Complete output from command python setup.py egg_info:
Supervisor requires Python 2.4 or later but does not work on any version of Python 3. You are using version 3.6.7 |Anaconda, Inc.| (default, Oct 23 2018, 19:16:44)
[GCC 7.3.0]. Please install using a supported version.
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-9nl5_fmj/supervisor/
参考:
1.服务器使用Supervisor后台运行Celery
http://yshblog.com/blog/165
2.利用django admin后台配置celery定时任务
http://www.mamicode.com/info-detail-1768314.html
3.supervisor的安装与简单介绍
(包含详细的配置文件讲解)
https://www.cnblogs.com/Dicky-Zhang/p/6171954.html