python测试开发django之使用supervisord 后台启动celery 服务(worker/beat)

 更新时间:2022年07月19日 16:41:12   作者:上海-悠悠  
Supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统,这篇文章主要介绍了python测试开发django之使用supervisord 后台启动celery 服务(worker/beat),需要的朋友可以参考下

前言

Supervisor(‘http://supervisord.org/’)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。
它可以很方便的监听、启动、停止、重启一个或多个进程。
用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。

环境准备

centos 安装 supervisord

yum install -y supervisord

debian 安装 supervisord

apt-get install -y supervisor

supervisord.conf

安装完成后在/etc/supervisor 目录下会有个配置文件 supervisord.conf

# cd /etc/supervisor
/etc/supervisor# ls
conf.d	supervisord.conf

cat 查看内容

# cat supervisord.conf 
; supervisor config file

[unix_http_server]
file=/var/run/supervisor.sock   ; (the path to the socket file)
chmod=0700                       ; sockef file mode (default 0700)

[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor            ; ('AUTO' child log dir, default $TEMP)

; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket

; The [include] section can just contain the "files" setting.  This
; setting can list multiple files (separated by whitespace or
; newlines).  It can also contain wildcards.  The filenames are
; interpreted as relative to this file.  Included files *cannot*
; include files themselves.

[include]
files = /etc/supervisor/conf.d/*.conf

在项目中我们需要用到此配置,可以在项目根目录导出一份

echo_supervisord_conf > ./supervisord.conf

文件内容编写

supervisord.conf文件内容编写, 前面内容不用改,直接接着在后面写
比如我需要后台启动celery的worker和beat服务

; Sample supervisor config file.
;
; For more information on the config file, please see:
; http://supervisord.org/configuration.html

; 前面文档省略,不用删,接着后面写

[program:celery-worker]
command=celery -A hrun2_web worker -l info ; 管理命令,supervisor不支持后台进程
process_name=%(program_name)s
#user=root                                 ;进程启动用户
autostart=true                           ;是否随supervisor启动
autorestart=true                         ;是否在挂了之后重启,意外关闭后会重启,比如kill掉!
startretries=3                           ;启动尝试次数
stderr_logfile=./celery_worker.log           ;标准输出文件
stdout_logfile=./celery_worker.log        ;标准输出文件
loglevel=info                            ;日志的级别


[program:celery-beat]
command=celery -A hrun2_web beat ; 管理命令,supervisor不支持后台进程
process_name=%(program_name)s
#user=root                                 ;进程启动用户
autostart=true                           ;是否随supervisor启动
autorestart=true                         ;是否在挂了之后重启,意外关闭后会重启,比如kill掉!
startretries=3                           ;启动尝试次数
stderr_logfile=./celery_beat.log          ;标准输出文件
stdout_logfile=./celery_beat.log        ;标准输出文件
loglevel=info                            ;日志的级别

启动服务

启动服务

supervisord -c /path/supervisord.conf

关闭服务

supervisorctl shutdown

运行过程,启动没问题,不显示任何内容,如果需要关闭用shutdown

root@13107c465557:/code# supervisord -c ./supervisord.conf
root@13107c465557:/code# supervisorctl shutdown
Shut down

查看启动的服务

supervisorctl status

执行结果如下

root@13107c465557:/code# supervisorctl status
celery-worker RUNNING pid 234, uptime 0:00:14
celery-beat RUNNING pid 235, uptime 0:00:14

说明启动了celery和celery-beat两个服务

查看日志

我们在配置里面指定了./celery_worker.log 文件保存运行日志,所以可以直接查看这个文件

tail -f celery_worker.log -n 30

运行就可以看到worker运行的日志了

参考教程 https://www.jb51.net/article/146238.htm

到此这篇关于python测试开发django之使用supervisord后台启动celery服务(worker/beat)的文章就介绍到这了,更多相关supervisord后台启动celery服务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python Pymysql实现数据存储的示例

    Python Pymysql实现数据存储的示例

    本文主要介绍了Python Pymysql实现数据存储的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • 深入浅析Python字符编码

    深入浅析Python字符编码

    Python的字符串编码规则一直让我很头疼,花了点时间研究了下,并不复杂,本文给大家介绍python字符编码,感兴趣的朋友一起学习吧
    2015-11-11
  • Python中Matplotlib图像添加标签的方法实现

    Python中Matplotlib图像添加标签的方法实现

    本文主要介绍了Python中Matplotlib图像添加标签的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • python爬虫开发之selenium模块详细使用方法与实例全解

    python爬虫开发之selenium模块详细使用方法与实例全解

    这篇文章主要介绍了python爬虫开发之selenium模块详细使用方法与实例全解,selenium模块详细在爬虫开发中主要用来解决JavaScript渲染问题需要的朋友可以参考下
    2020-03-03
  • python 使用re.search()筛选后 选取部分结果的方法

    python 使用re.search()筛选后 选取部分结果的方法

    今天小编就为大家分享一篇python 使用re.search()筛选后 选取部分结果的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • Pygame游戏开发之太空射击实战图像精灵下篇

    Pygame游戏开发之太空射击实战图像精灵下篇

    相信大多数8090后都玩过太空射击游戏,在过去游戏不多的年代太空射击自然属于经典好玩的一款了,今天我们来自己动手实现它,在编写学习中回顾过往展望未来,下面开始入门篇
    2022-08-08
  • python json.dumps中文乱码问题解决

    python json.dumps中文乱码问题解决

    这篇文章主要介绍了python json.dumps中文乱码问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • 详解Flask框架中Flask-Login模块的使用

    详解Flask框架中Flask-Login模块的使用

    Flask-Login 是一个 Flask 模块,可以为 Flask 应用程序提供用户登录功能。这篇文章将通过一些示例为大家介绍一下Flask-Login模块的使用,需要的可以参考一下
    2023-01-01
  • python构建自定义回调函数详解

    python构建自定义回调函数详解

    在工作中,回调函数使用的场景是非常多的,下面我们就来通过例子程序来详细了解利用了Python的属性机制构建了一个自定义回调函数的使用
    2017-06-06
  • 解决pycharm下os.system执行命令返回有中文乱码的问题

    解决pycharm下os.system执行命令返回有中文乱码的问题

    今天小编就为大家分享一篇解决pycharm下os.system执行命令返回有中文乱码的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07

最新评论