Как получить идентификатор группы в экземпляре подзадачи при работе с группой celery?

#celery-task

#сельдерей-задача

Вопрос:

При работе с цепочками сельдерея 4.3.0 код выглядит следующим образом:

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

@app.task(bind=True, base=BaseTask)
def add(self, x, y):
    return x y

@app.task(bind=True, base=baseTask)
def add_1(self,x, y):
    return x y

task = group(add.s(1,3), add_1.s(2,4))()
group_id = task.id


  

Я могу получить group_id с помощью taks.children[0]._cache.get(«группа»),

Как я могу получить group_id в функциях BaseTask on_success?

Ответ №1:

Вы можете найти идентификатор группы задачи внутри app.task.Request объекта, доступный через Task объект, вот так:

 class BaseTask(Task):
    def on_success(self, retval, task_id, args, kwargs):
        group_id = self.request.group
        # rest of your code