任务管理:

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

说明: 如上为运行任务后的标准输出,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