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

目录
  • 前言
  • 环境准备
  • supervisord.conf
  • 文件内容编写
  • 启动服务
  • 查看日志

前言

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服务内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python3.8+django2+celery5.2.7环境准备(python测试开发django)

    目录 前言 版本要求 环境准备 Django中使用Celery django-celery-beat 定时任务 启动工作进程 前言 以前版本的 Celery 需要一个单独的库(django-celery)来与 Django 一起工作,但从 3.1 开始不再是这种情况.现在支持开箱即用的 Django,因此本文档仅包含集成 Celery 和 Django 的基本方法.celery5.x 不支持windows平台了.Celery 5.0.x 支持 Django 1.11 LTS 或更新版本. 版本要

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

    目录 前言 环境准备 supervisord.conf 文件内容编写 启动服务 查看日志 前言 Supervisor(‘http://supervisord.org/’)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统.它可以很方便的监听.启动.停止.重启一个或多个进程.用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,

  • Python移动测试开发subprocess模块项目实战

    目录 一.背景 二.subprocess 模块基础 1. subprocess.run 方法 2. subprocess.Popen 方法 3. run 与 Popen 的同步/异步对比实验 三.遇到的问题与解决方案 如何保证获取到完整的进程执行日志 解决方案如下: 一.背景 我们日常测试中存在大量重复的造数操作,且流程较长,为了提升测试效率,我们搭建了数据构造平台.平台采用了前端 + 脚本分离的形式,数据构造脚本独立存在,页面和脚本的关联关系通过页面配置进行绑定. 页面配置中,包含了脚本的路径

  • Python后台开发Django的教程详解(启动)

    Django版本为:2.1.7 Python的web框架,MTV思想 MVC Model(模板文件,数据库操作)  view(视图模板文件  )controller(业务处理) MTV Model(模板文件,数据库操作)  template(视图模板文件) view(业务处理) 安装及访问 安装 pip3 install django 创建目录 如win:在需要创建目录的文件夹按住shift+鼠标右键打开命令行,创建dongjg工程目录 C:\Users\东东\AppData\Local\Pro

  • Django微信小程序后台开发教程的实现

    1 申请小程序,创建hello world小程序 在微信开发平台(https://mp.weixin.qq.com)申请小程序并获取APP id 下载微信开发者工具(https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html),打开后登录并填入APP id 等信息. 2 添加交互框和按钮 index. wxml <!--index.wxml--> <view class="container&q

  • python中的django是做什么的

    Django是什么? Django是一个基于Python的Web应用框架.它与Python的另外一个Web 框架 Flask最大的区别是,它奉行 "包含一切" 的哲学.该理念即为:创建 Web 应用所需的通用功能都应该包含到框架中,而不应存在于独立的软件包中.例如,身份验证. URL 路由. 模板系统. 对象关系映射 (ORM) 和 数据库迁移等功能都已包含在Django 框架中.虽然看上去失去了一些弹性,但是却可以让你在构建网站的时候更加有效率. 由于Django最初是被开发来用于管

  • Python学习之Django的管理界面代码示例

    本文研究的主要是Python web开发框架Django的管理界面的相关内容,具体如下. admin界面的路径,通常在my_project中已经设置好了,使用django-admin.py startproject my_project 在目录下的urls.py文件中可以看到 from django.conf.urls import include, url from django.contrib import admin urlpatterns = [ # Examples: # url(r'

  • 使用Python来开发微信功能

    在移动社交时代,微信已经成为我们生活不可或缺的一部分.2017年的<微信数据报告>中显示:每天有380亿条消息从微信上发出,其中6亿条是语音消息,有350万个活跃的公众账号,并存在着8亿活跃粉丝.在其他诸如支付.出行等方面,也更是与我们的生活休憩相关.正如它的slogan那样:微信,是一个生活方式. 和微信有关的第三方框架很多,比如「wxpy」「wxBot」等,今天要使用的是其中著名的「itchat」Python模块,它是由第三方开发者@LittleCoder等架构实现的接口,该API的使用场

  • Python中的Django基本命令实例详解

    一.新建项目 $django-admin.py  startproject  project_name # 特别是在 windows 上,如果报错,尝试用 django-admin 代替 django-admin.py 试试 注意 project_name 是自己的项目名称,需要为合法的 Python 包名,如不能为 1a 或 a-b. 二.新建APP 要先进入项目目录下,cd project_name 然后执行下面的命令: $ python manage.py startapp app_nam

  • python基于爬虫+django,打造个性化API接口

    简述 今天也是同事在做微信小程序的开发,需要音乐接口的测试,可是用网易云的开放接口比较麻烦,也不能进行测试,这里也是和我说了一下,所以就用爬虫写了个简单网易云歌曲URL的爬虫,把数据存入mysql数据库,再利用django封装装了一个简单的API接口,给同事测试使用. 原理 创建django项目,做好基础的配置,在views里写两个方法,一个是从mysql数据库中查数据然后封装成API,一个是爬虫方法,数据扒下来以后,通过django的ORM把数据插入到mysql数据库中. 这里的路由也是对应两

随机推荐