supervisor djcelery(django、celery)在linux上的部署

  • 安装配置
pip install  supervisor

supervisor不支持python3,所以创建python 2.7的虚拟环境,目前两个虚拟环境(当前文章虚拟环境采用anaconda):

  1. (envDjango):python=3.6;django=2.1;djcelery
  2. (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

猜你喜欢

转载自blog.csdn.net/weixin_33127753/article/details/84872322
今日推荐