【问题标题】:How to override __call__ in celery on main?如何在主要的芹菜中覆盖__call__?
【发布时间】:2014-02-05 10:19:02
【问题描述】:

我一直在使用抽象任务并覆盖__call__ 方法来在每个任务执行之前处理一些事情,如下所示:

class CoreTaskHandler(Task):
    abstract = True
    def __call__(self, *args, **kwargs):

但是__call__ 方法在worker上执行,我需要一些覆盖在main上执行,而不是每次任务“延迟”时在worker上执行。

有人知道我将如何继续这样做吗?

【问题讨论】:

    标签: python django celery


    【解决方案1】:

    我已经通过覆盖 Task 中的 apply_sync 方法解决了这个问题:

    class CoreTaskHandler(Task):
        abstract = True
        def apply_async(self, *args, **kwargs):
    
            ........
    
            return super(CoreTaskHandler, self).apply_async(*args, **kwargs)
    

    【讨论】:

      猜你喜欢
      • 2015-07-18
      • 1970-01-01
      • 2016-09-23
      • 2020-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-11
      相关资源
      最近更新 更多