Django+celery使用supervisor进行进程守护

发布时间 2023-10-26 18:43:03作者: lytcreate

1.库版本

supervisor 4.2.5
django-celery-beat 2.5.0
django-celery-results 2.5.1
Django 4.2.6

环境: Linux
项目路径:/opt/new/new_project

2.制作软连接
已知,Python的安装目录是 /usr/local/python3,其下有 bin/include/lib和share四个目录,其中bin里面就是我们安装pip库后的可执行文件存放位置
可以 ll /usr/local/python3/bin 查看到echo_supervisord_conf、supervisorctl、supervisord三个相关的文件

echo_supervisord_conf用来生成supervisor的默认配置信息
supervisorctl用来控制supervisor服务中各项服务的启停
supervisord可以用来以指定配置文件启动supervisor服务

新建软连接
cd /usr/bin
ln -s /usr/local/python3/bin/echo_supervisord_conf echo_supervisord_conf
ln -s /usr/local/python3/bin/supervisorctl supervisorctl
ln -s /usr/local/python3/bin/supervisord supervisord

建立完成后可在任务位置执行supervisor相关命令

 

3.生成配置文件
在项目目录下/opt/new/new_project 生成配置文件

cd /opt/new/new_project
# 会在上述目录生成一个supervisord.conf文件
echo_supervisord_conf > supervisord.conf

4.修改配置
vim supervisord.conf
将配置文件末尾的[include]部分放开,包含[include]这一行,files设置一个相对于supervisord.conf文件的位置,所有这个目录下的.ini文件都会被supervisor识别为他的看护进程,这里设置为config,则在目录/opt/new/new_project/config下所有的ini文件的进程都会被看护

 


[include]
files = config/*.ini

5.新增ini文件
一个.ini文件代表一个进程,本次主要有Django项目、celery进程,celery-beat进程

Django.ini内容:
[program:django]
command=python3 /opt/new/new_project/manage.py runserver 192.168.131.129:8000
user=root
autostart=true
autorestart=true
stdout_logfile=/opt/new/new_project/django.log
stderr_logfile=/opt/new/new_project/django_error.log
参数说明:
program: 进程名,会在supervisorctl status中显示
command:启动进程的命令,需要使用环境能够识别的命令,一般为绝对路径
user: 用来执行command的用户名
autostart: 是否自动启动
autorestart: 掉线后是否自动重启
stdout_logfile: 日志文件
stderr_logfile: 错误日志

  

celery.ini文件内容
[program:celery]
command=celery -A new_project worker -l debug -P eventlet
user=root
autostart=true
autorestart=true
stdout_logfile=/opt/new/new_project/celery.log
stderr_logfile=/opt/new/new_project/celery_error.log

celery-beat.ini文件内容
[program:celery-beat]
command=celery -A new_project beat -l info
user=root
autostart=true
autorestart=true
stdout_logfile=/opt/new/new_project/celery-beat.log
stderr_logfile=/opt/new/new_project/celery-beat_error.log

  

6.启动supervisor服务
此处以指定配置文件进行启动
cd /opt/new/new_project
supervisord -c supervisord.conf
服务启动完成,可以使用 supervisorctl status 查看进程状态

重启进程: supervisorctl restart 进程名/all
启动进程: supervisorctl start 进程名/all
关闭进程: supervisorctl stop 进程名/all

修改ini配置之后,一点要!!!重载配置: supervisorctl reload