根据特定任务更改任务的默认倒计时 class?
Change the default countdown for tasks based on a certain task class?
我有一个自定义的 celery 任务 class,然后我在装饰器 @celeryApp.task 中使用它。我用 apply_async.
执行任务
我的任务class是:
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 但没有倒计时 属性.
是否有特定任务的默认倒计时 classes?
正如您所指出的,任务 class 不保持倒计时 属性。我认为这主要是因为倒计时是描述任务执行方式的东西——它不是描述任务本身的东西。
然而,这并不是世界末日。你有一个很好的解决方案。
- 执行您的子任务class,确实具有"countdown" 属性。
- 覆盖所有以"countdown"为参数的方法。它们的实现是微不足道的,因为它们将调用 superclass 方法,使用
coundown=self.m_countdown
(或者你命名它)。
我有一个自定义的 celery 任务 class,然后我在装饰器 @celeryApp.task 中使用它。我用 apply_async.
执行任务我的任务class是:
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 但没有倒计时 属性.
是否有特定任务的默认倒计时 classes?
正如您所指出的,任务 class 不保持倒计时 属性。我认为这主要是因为倒计时是描述任务执行方式的东西——它不是描述任务本身的东西。
然而,这并不是世界末日。你有一个很好的解决方案。
- 执行您的子任务class,确实具有"countdown" 属性。
- 覆盖所有以"countdown"为参数的方法。它们的实现是微不足道的,因为它们将调用 superclass 方法,使用
coundown=self.m_countdown
(或者你命名它)。