【问题标题】:Change the default countdown for tasks based on a certain task class?根据某个任务类更改任务的默认倒计时?
【发布时间】:2019-07-19 17:07:50
【问题描述】:

我有一个自定义 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 但没有倒计时属性。

对于某些任务类是否有默认倒计时?

【问题讨论】:

    标签: celery


    【解决方案1】:

    正如您所指出的,Task 类不包含倒计时属性。我认为这主要是因为倒计时是描述任务如何执行的东西 - 它不是描述任务本身的东西。

    然而,这并不是世界末日。你有一个很好的解决方案。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-24
      • 2016-08-22
      • 2017-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多