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

本文介绍了如何在Linux环境下使用Supervisor管理Python的Django项目与Celery任务。首先创建了两个虚拟环境,一个用于Django与Celery(envDjango),另一个用于Supervisor(envSupervisor)。接着详细讲解了worker和beat进程的配置,并提供了一个项目配置文件sv.ini的示例。最后,阐述了启动、关闭Supervisor的方法以及在安装过程中可能遇到的错误和解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Supervisor是Linux/Unix系统下的一个进程管理工具,它可以很方便的监听、启动、停止、重启一个或多个进程。

  • 安装配置
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已测试通过,详情见:https://blog.youkuaiyun.com/weixin_33127753/article/details/84836885
……
在虚拟环境envSupervisor下,执行如下Linux shell命令:

#安装supervisor
pip install supervisor
#通过echo_supervisord_conf命令得到supervisor配置模板
echo_supervisord_conf > /etc/supervisord.conf
#编辑supervisord.conf,修改最后两行:
vim /etc/supervisord.conf
“””
[include]
files = sv.ini
“””
#创建/etc/sv.ini文件:
touch /etc/sv.ini
#编辑sv.ini文件,按下方说明
vim sv.ini
  • woker和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控制器,help可以查看更多命令:
在这里插入图片描述

  • 安装时可能遇到的错误信息

发生如下错误,是因为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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值