【问题标题】:Celery task display name芹菜任务显示名称
【发布时间】:2018-01-28 19:14:22
【问题描述】:

我有一些 Celery 任务,我正在通过使用任务 ID 实例化 AsyncResult 从单独的进程定期检查它们的状态。

由此,我得到了任务状态。通过实现自定义结果后端和扩展 AsyncResult 类,如here 所述,我也可以获取任务名称。但是,我希望能够为每个任务获取自定义显示名称 - 人类可读的名称,以便我可以以用户友好的方式显示状态信息。

假设,它可能被设置为:

@app.task()
def my_task(args):
    display_name = "My Task"
    ...
    ...

然后我会做......

result = ExtendedAsyncResult(task_id)
result.display_name

但是从我链接到的自定义结果后端来看,似乎没有任何方法可以访问任务的局部变量。

有没有办法实现我正在寻找的东西?

【问题讨论】:

    标签: celery celery-task


    【解决方案1】:

    Celery 支持任务名称 - 希望这是您正在寻找的:

    @app.task(name='My Task')
    def my_task(args):
        ...
        ...
    

    My Task 现在将出现在您想要的任何位置(例如花中)。

    【讨论】:

    • 谢谢...这可能应该是答案。我忘了提到我试过了,但是(a)它破坏了我的任务(不知道为什么 - 如果我设置'name',它们就不会再运行了),并且(b)我不确定它是否安全在这样的名称中使用空格等(即使我可以让它工作)。该文档在所有示例中显示了更多类似变量的名称。只要名称是唯一的,它就不会明确禁止任何事情,但我对此没有信心。
    • 有趣。实际上我使用的是带下划线(而不是空格)的名称,但据我所知,它也应该与空格一起使用..它的目的是记录。无论如何,如果你成功请更新,如果它解决了你的问题,请接受/投票:-)
    • 我发现了问题所在,这是我的错。有一个自定义任务路由器会忽略没有特定前缀的任务。一旦我解决了这个问题,这里的解决方案就完美了。
    • 酷!感谢更新
    • 在运行时设置这个名字怎么样?
    猜你喜欢
    • 2021-01-02
    • 1970-01-01
    • 2022-06-10
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 2015-05-28
    • 2014-07-14
    相关资源
    最近更新 更多