5. 任务状态追踪on_message

Celery支持捕获任务的所有状态变化,通过设置on_message回调函数,

然后我写了以下代码,开始进行测试::

import time

from celery import Celery
from celery import states


app = Celery('tasks',
             backend='amqp://agent:agent@172.18.231.134:5672',
             broker='amqp://agent:agent@172.18.231.134:5672')


@app.task(bind=True)
def track_states(self, x, y):
    time.sleep(5)
    self.update_state(state='PROGRESS', meta={'progress': 50})
    time.sleep(5)
    self.update_state(state='PROGRESS', meta={'progress': 80})
    time.sleep(3)
    return 'hello world: %i' % (x + y)
    

def on_raw_message(body):
    print('[{0}] {1}'.format(time.time(), body))

    
if __name__ == '__main__':
    async_result = track_states.delay(2, 3)
    result = async_result.get(on_message=on_raw_message, propagate=False)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值