我可以在运行时在Task上定义celery队列属性吗?

时间:2012-03-22 20:15:37

标签: django celery

用例:

class MyTask(Task):
    queue = 'default_queue'

    def run(self):
        # do work

通常我会运行以下使用指定的'default_queue'。

MyTask.delay()

我需要做的是:

if hours_since_last_login > 24:
    MyTask.delay()   # using the queue 'high_priority_queue'
else:
    MyTask.delay()   # using the 'default_queue'

我知道我可以将MyTask子类化为覆盖queue属性,但有没有办法在运行时定义它?

以下是正确的方法吗?

task = MyTask()
task.queue = 'high_priority_queue'
task.delay()

1 个答案:

答案 0 :(得分:4)

来自Askol的IRC:

MyTask.apply_async(args=[], kwargs={}, queue='high_priority_queue')