Укажите очередь для класса задач в Celery

#python #celery #django-celery

#python #сельдерей #django-сельдерей

Вопрос:

Когда я создаю функциональную задачу, я могу сделать следующее, чтобы указать очередь:

 @app.task(name='my_task', queue='my_queue')
def some_task():
    return "hey"
  

Затем я могу вызвать эту задачу следующим образом: some_task.delay() и она отправит задачу в my_queue .

Однако, если у меня есть класс, который наследуется от celery.Task класса, я должен указывать очередь каждый раз, когда я вызываю эту задачу:

 class MyTask(Task):
    def run(self):
        return "Hey"

MyTask.apply_async(queue="my_queue")
  

Есть ли способ указать это в определении класса? Что-то вроде этого:

 class MyTask(Task):
    queue = 'my_queue'

    def run(self):
         return "Hey"
  

Я не могу найти способ сделать это в документации. Возможно ли это?

Ответ №1:

Оказывается, именно так вы бы это и сделали:

 class MyTask(Task):
    queue = 'my_queue'

    def run(self):
        return "Hey"