celery是python里常用的一个异步任务队列,使用celery可以大大简化搭建任务队列的工作。实际使用中可能会需要监控一些任务或者定时任务的运行状态。
这里就讲一下celery的任务状态监控相关的方法。
单独使用celery命令格式为 celery -A [proj] [cmd]
在django下使用时,用manage.py启动时则不需要-A参数,命令格式为
python manage.py celery [cmd]
1. 通用命令
1) 查看celery worker的状态
python manage.py status
celery@DEV_192_168_X_XX: OK
celery@DEV_192_168_X_XX: OK
celery@DEV_192_168_X_XX: OK
celery@DEV_192_168_X_XX: OK
celery@DEV_192_168_X_XX: OK
1 node online.
返回内容表示目前有5个worker运行中,运行正常,
@前面是worker的name,后面是worker的hostname,在启动worker时用-n workername@%h参数传入,如果不传递,默认为celery@hostname。
会报一个warning,建议给每个worker定义一个唯一的名字。
第二部分返回值是worker的计数,只是简单的统计了不同名称的个数.比如上面没有指定队列名称,就会统计只有一个活动的node.
2) 查看 celery task和queue详细信息
查看当前正在运行的task
python manage.py inspect active
-> celery@localhost: OK
- empty -
查看当前的队列的具体信息
python manage.py inspect active-queues
-> celery@localhost: OK
* {u'exclusive': False, u'name': u'celery', u'exchange': {u'name': u'celery'
, u'durable': True, u'delivery_mode': 2, u'passive': False, u'arguments': None,
u'type': u'direct', u'auto_delete': False}, u'durable': True, u'routing_key': u'
celery', u'no_ack': False, u'alias': None, u'queue_arguments': None, u'binding_a
rguments': None, u'bindings': [], u'auto_delete': False}
输出 worker的内存占用(需要安装psutil库)
python manage.py celery inspect memdump
-> celery@localhost: