监控芹菜任务状态而无需轮询?

是否可以在不轮询的情况下监视芹菜任务的状态?

例如,如果我有一个任务会使用update_state定期更新其状态:

@task(bind=True)
def my_task(self):
    for x in range(100):
        time.sleep(1)
        self.update_state(state='PROGRESS', meta={'x': x})

是否可以在不轮询的情况下从另一个进程监视该状态?

解决方法:

我还没有自己做,所以这不是一个完整的答案,但是我有兴趣解决相同的问题.我有三个值得考虑的想法:

>使用on_failure,on_retry和on_success之类的内置handler states可以在您的用例中使用吗?
>另一个是将Task子类化(此处是简单的示例:Callback for celery apply_async),并添加on_ *处理程序,这些处理程序将传递自定义状态的回调函数.也许甚至没有必要
>最好是write a custom event receiver.我认为这就是他们的“Real-time Celery web-monitor”示例的工作方式.与此相关的SO帖子是:Implementing Twisted style local multiple deferred callbacks in Celery.

上一篇:美多商城之验证码(异步方案)


下一篇:python-芹菜任务的重用结果