Celery: Результаты, полученные от группы, имеют task_name = None

Созданный на 13 февр. 2015  ·  3Комментарии  ·  Источник: celery/celery

Когда я пытаюсь получить доступ к имени задачи из результата, полученного от группы, возвращается None

Python (s): 3.3.6, 3.4.2
сельдерей: 3.1.17

proj / celery.py

from celery import Celery

app = Celery('proj',
             broker='amqp://',
             backend='amqp://',
             include=['proj.tasks'])

# Optional configuration, see the application user guide.
app.conf.update(
    CELERY_TASK_RESULT_EXPIRES=3600,
)

if __name__ == '__main__':
    app.start()

proj / tasks.py

from proj.celery import app

@app.task
def add(x, y):
    return x + y


@app.task
def mul(x, y):
    return x * y

run_add.py

from celery import group

from proj import tasks

import logging

log = logging.getLogger(__name__)
logging.basicConfig(level=logging.DEBUG)

results = group([
    tasks.mul.s(4,4),
    tasks.add.s(3,3)
]).delay()

while results.waiting():
    pass

if results.successful():
    for result in results:
        log.info('ID: {}, name: {}'.format(result.task_id, result.task_name))

Результат:

INFO:__main__:ID: c2fa4f30-0691-41ee-8f7b-e7dcbf32d09a, name: None
INFO:__main__:ID: f545bfa0-2ad7-40b3-9d05-561d4c1eba7e, name: None

Самый полезный комментарий

@ask , а теперь нет возможности получить task_name? У нас есть конечная точка, используемая для предоставления данных задачи в Интернет, и мы хотели бы, учитывая AsyncResult, регистрировать имя задачи.

Все 3 Комментарий

То же самое, кажется, происходит и с цепями.
Об этом также есть сообщение stackoverflow:

Получите task_name из AsyncResult при отправке цепочек в сельдерее

task_name - это локальное поле, оно больше ни для чего не используется и, думаю, должно быть полностью удалено.

Отправленный результат на самом деле не имеет поля имени, оно использовалось в какой-то момент для сериализации бэкэнда с результатом при использовании pickle, но теперь это выполняется по-другому.

@ask , а теперь нет возможности получить task_name? У нас есть конечная точка, используемая для предоставления данных задачи в Интернет, и мы хотели бы, учитывая AsyncResult, регистрировать имя задачи.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги