基础入门_Python-模块和包.深入Celery之节点管理/任务调度/任务追踪?

任务管理:

说明: 如上为运行任务后的标准输出,transport为消息代理,concurrency为默认进程池进程数,当所有子进程处于忙碌状态时必须等待空闲子进程处理,如果是IO密集型可尝试使用Eventlet/Gevent协程,具体可参考http://docs.jinkan.org/docs/celery/userguide/concurrency/index.html#concurrency,result为结果存储,queue为所有的队列以及交换机信息列表

参数 含义
%p 节点全名,如[email protected]
%n 只包含主机名,如foo
%h 包含域名的主机名,如bar.example.com
%d 只包含域名,如example.com
%i Prefork类型的进程索引,主进程为0,根据-n指定的名称生成对应的从1开始累加的名称,常用于用于为每个子进程创建唯一的日志文件
%I Prefork类型的进程索引,主进程空,根据-n指定的名称生成对应的从1开始累加的名称,常用于用于为每个子进程创建唯一的日志文件

# 启动节点

celery multi start notify -A work.app -c 4 -l info --pidfile=notify.pid --logfile=notify.log

# 关闭节点

celery multi stop  notify -A work.app -c 4 -l info --pidfile=notify.pid --logfile=notify.log

celery multi stopwait  notify -A work.app -c 4 -l info --pidfile=notify.pid --logfile=notify.log

celery multi kill  notify -A work.app -c 4 -l info --pidfile=notify.pid --logfile=notify.log

# 重启节点

celery multi restart notify -A work.app -c 4 -l info --pidfile=notify.pid --logfile=notify.log

# 查看节点

celery multi names notify -A work.app -c 4 -l info --pidfile=notify.pid --logfile=notify.log

celery multi show notify -A work.app -c 4 -l info --pidfile=notify.pid --logfile=notify.log



说明: Celery提供了一个multi子名称,可以很方便的管理Celery应用的启动(notify表示应用的唯一标识,-A表示应用的入口文件,-c表示默认工作进程下将启动的子进程数,--pidfile表示进程文件,--logfile表示日志文件)/关闭(stop表示异步停止应用,stopwait表示同步等待停止应用,kill表示终止应用,但需要注意的是必须指定--pidfile和--logfile)/重启(restart表示重启应用,但需要注意的是默认multi并不记忆之前启动参数,所以需要和启动参数一样)

扩展: 如果想要跟踪不同子进程的日志可直接在--pidfile和--logfile中使用上面的格式化参数,如celery multi start notify -A work.app -c 4 -l info --pidfile=notify%I.pid --logfile=notify%I.log,则会在当前运行目录下生成不同进程的进程ID以及日志文件,但是当你关闭和重启的时候就不那么方便了~

任务调度:

celery beat --help

任务跟踪:

celery result --help

celery -A work.app inspect --help

在线控制:

celery amqp --help

celery -A work.app control --help

在线节点:

celery -A work.app status

时间: 2024-08-01 06:25:29

基础入门_Python-模块和包.深入Celery之节点管理/任务调度/任务追踪?的相关文章

基础入门_Python-模块和包.深入Celery之常用架构/方案选型/必知必会?

简单介绍: 说明: 此模块是一个专注于分布式消息传递的异步任务队列,所谓任务就是消息,消息中的有效载荷中包含要执行的任务需要的全部数据 几大特性: 1. Celery易于使用和维护,且不需要配置文件,默认配置启动时自动写入消息代理. 2. Celery高可用,连接丢失或失败时客户端或消费者会自动重试,并且可通过消息代理的双主/主从模式来提高高可用性 3. Celery快速,单个进程每分钟可处理百万任务,且优化后可保持往返延迟在亚毫秒级别 4. Celery灵活,几乎所有部分都支持扩展或单独使用,

基础入门_Python-模块和包.深入Celery之应用配置/独立模块配置实践?

配置简介: 说明: Celery的配置文件非常强大,支持在应用上设置,也可以使用一个独立的配置模块,具体需要调整的默认选项可通过http://docs.jinkan.org/docs/celery/configuration.html#configuration 获取. # 方式一 : 直接在应用上设置,通过app.conf.update可一次性设置多个选项,常用于小型项目 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date    : 20

基础入门_Python-模块和包.深入Celery之Beat触发定时/周期性任务?

任务调度: 1. Celery默认任务单元由任务生产者触发,但有时可能需要其自动触发,而Beat进程正是负责此类任务,能够自动触发定时/周期性任务. #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date    : 2016-12-24 17:32:54 # @Author  : 李满满 ([email protected]) # @Link    : http://xmdevops.blog.51cto.com/ # @Version : $

基础入门_Python-模块和包.深入Celery之使用队列以及优先级提高响应?

多个队列: 1. Celery默认使用的队列名为celery默认绑定在direct交换机celery,可通过CELERY_DEFAULT_QUEUE/CELERY_DEFAULT_EXCHANGE/CELERY_DEFAULT_ROUTING_KEY等参数配置修改. #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date    : 2016-12-24 17:32:54 # @Author  : 李满满 ([email protected])

2015/9/15 Python基础(12):模块和包

模块是用来组织 Python 代码的方法,而包则是用来组织模块的. 当代码量很大时,我们一般会把代码分成几个有组织的代码段,然后每个代码段之间有一定的联系.代码单之间是共享的,所以Python允许调入一个模块,允许使用其他模块的属性利用之前的工作成果,实现代码重用.那些自我包含并且有组织的代码片段就是模块(module),将其他模块中属性附加到你的模块中的操作较导入(import) 模块是逻辑上的说法,而它们在物理层是一个个独立的文件,模块的文件名就是模块的名字加拓展名.py.与其他可以导入类的

基础入门_Python-模块和包.运维开发中日志模块logging的最佳实践?

简单介绍: 说明: 此模块儿提供了文件,HTTP GET/POST,SMTP,SOCKET等方式实现日志记录,甚至可以自动实现具体的日志记录方式 快速安装: pip install --upgrade logging 处理流程: 日志级别: 属性名称 属性说明 logging.NOTSET 默认为0 logging.DEBUG 调试为10 logging.INFO 一般为20 logging.WARN 警告为30 logging.ERROR 错误为40 logging.CRITICAL 严重为5

基础入门_Python-模块和包.运维开发中inspect自省模块的最佳实践?

简单介绍: 说明: 此模块提供了一系列自省函数,可获取模块/类/方法/函数/traceback/帧对象/代码对象的信息 快速安装: 内置模块 测试相关: inspect.ismodule(object) -> True/False 说明: 判断object是否为模块 inspect.isclass(object) -> True/False 说明: 判断object是否为类 inspect.ismethod(object) -> True/False 说明: 判断object是否为方法

基础入门_Python-模块和包.运维开发中内建模块getopt的最佳实践?

简单介绍: 此模块提供命令行选项解析,目前支持短格式和长格式选项 快速安装: 说明:  内建模块无需安装 解析方法: getopt(args, shortopts, longopts = []) -> (opts, args) 说明: args为要解析的参数序列,常为sys.argv[1:],shortopts为单字符选项定义串,如果某个选项需要一个参数,响应字母后面必须有一个冒号,longopts为长格式的选项名序列,可以包含多个字符,序列元素必须包含--前缀,如果此长选项需要参数则其名应包含

基础入门_Python-模块和包.深入SQLAlchemy之列级别约束与表级别约束?

简单介绍: 说明: 此模块主要用于将关系型数据库表映射到PY的类,行映射到PY类的实例,列映射为PY实例的属性,由于其兼容众多DB-API及扩展,SO可以优先考虑数据模型,而忽略底层的DB-API切换,数据迁移更方便. 快速安装: pip install --upgrade SQLAlchemy 创建引擎: 1. 连接数据库前需创建引擎,作为执行SQL的接口,其实底层通过Pool(连接池)和Dialect(翻译器)将映射后的PY语句转换为对应DB-API支持的原生SQL语句去执行,这样写PY时就