更改基于特定任务类的任务的默认倒计时?

时间:2019-07-19 17:07:50

标签: celery

我有一个自定义的celery任务类,然后在装饰器@ celeryApp.task中使用它。我使用apply_async执行任务。

我的任务类别是:

class CeleryTask(Task):
    def run(self, *args, **kwargs):
        pass

    def on_success(self, retval, task_id, args, kwargs):
        pass

    def on_failure(self, exc, task_id, args, kwargs, einfo):
        pass

然后我将任务声明为:

@celeryApp.task(base=CeleryTask)
def my_celery_task(param1, param2):
    pass

最后我用apply_async执行它

my_celery_task.apply_async(
        (
            'value1', 'value2'
        ),
        countdown=2)

我希望所有基于CeleryTask的任务的倒计时为2。

但是,我在文档的任何地方都看不到该怎么做。我看了看celery.app.task:Task,但没有倒数属性。

反正某些任务类别有默认的倒数计时吗?

1 个答案:

答案 0 :(得分:0)

正如您所指出的,Task类不包含倒数属性。我认为主要是因为倒计时是描述任务如何执行的内容,而不是描述任务本身的内容。

但是,这还不是世界的尽头。您对此有一个很好的解决方案。

  • 实现您的Task子类 具有“ countdown”属性。
  • 覆盖所有以“ countdown”为参数的方法。它们的实现很简单,因为它们将使用coundown=self.m_countdown(或您将其命名)调用超类方法。