Как я должен получить имя задачу в, когда я получил свой AsyncResult
объект и, следовательно, его id
?Получить TASK_NAME от AsyncResult при подаче цепи в сельдерее
Например, если я запускаю два из моих задач в цепочке:
>>> task_chain = (task_A.s() | task_B.s())
>>> async_result = task_chain.apply_async()
я могу извлечь id
из task_B и, следовательно task_A с использованием внутреннего _parents()
метода, как это:
>>> async_result.id
>>> 2ed28e84-0673-4491-a56f-c5ab8dfb5725
>>> async_result._parents()[0].id
>>> e793f4dc-5110-4f57-8f98-8caa48c40528
Однако, когда я пытаюсь получить имя_события, я ничего не получаю:
>>> async_result.task_name
>>> async_result._parents()[0].task_name
Почему это происходит? Может быть, это может быть ошибка? Я заметил, что, отправив одну задачу, атрибут task_name
AsyncResult
работает отлично и возвращает правильное имя задачи.
Есть ли другой способ получить имя задачи из объекта AsyncResult?
Благодарим вас заблаговременно.
P.S. Здесь я уже нашел аналогичный вопрос, но никто, кажется, не предлагает практического и рабочего решения.
UPDATE
Видимо, кажется, что я хит стену с этим. Существует открытый билет на github о той же самой проблеме с той разницей, что это касается групп вместо цепей.
https://github.com/celery/celery/issues/2504
Ваш первый ответ не имеет никакого значения. С другой стороны, ваше обновление предполагает использование параметра 'name' метода' apply_async', который не принимает такой атрибут. – kstratis