Django+celery使用supervisor进行进程守护
1.库版本
1 2 3 4 | 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服务
1 2 3 4 5 6 7 | 新建软连接 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进程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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: 错误日志 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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
除此之外,还有优先级参数priority,数字越小优先级越高!在多个程序有先后顺序时可以使用。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结