Celery: 从组返回的结果具有 task_name=None

创建于 2015-02-13  ·  3评论  ·  资料来源: celery/celery

当我尝试从来自组的结果访问任务名称时,没有返回

蟒蛇:3.3.6、3.4.2
芹菜:3.1.17

项目/芹菜.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()

项目/任务.py

from proj.celery import app

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


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

运行_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 了吗? 我们有一个端点用于向 Web 公开任务数据,我们希望在给定 AsyncResult 的情况下记录任务的名称。

所有3条评论

同样的事情似乎也发生在链条上。
还有一个关于它的stackoverflow帖子:

在 celery 中提交链时从 AsyncResult 获取 task_name

task_name 是一个本地字段,它不再用于任何东西,我想它应该被完全删除。

发送的结果实际上没有 name 字段,它在某些时候用于在使用 pickle 时用结果序列化后端,但现在实现方式有所不同。

@ask现在没有办法获取 task_name 了吗? 我们有一个端点用于向 Web 公开任务数据,我们希望在给定 AsyncResult 的情况下记录任务的名称。

此页面是否有帮助?
0 / 5 - 0 等级