当前位置: 首页 > 面试题库 >

Celery-获取当前任务的任务ID

严开宇
2023-03-14
问题内容

如何从任务中获取任务的task_id值?这是我的代码:

from celery.decorators import task
from django.core.cache import cache

@task
def do_job(path):
    "Performs an operation on a file"

    # ... Code to perform the operation ...

    cache.set(current_task_id, operation_results)

这个想法是,当我创建任务的新实例时,我task_id从任务对象中检索。然后,我使用任务ID来确定任务是否已完成。我 不想
path值跟踪任务,因为在任务完成后文件将被“清理”,并且可能存在也可能不存在。

在上面的示例中,我将如何获取值current_task_id


问题答案:

如果任务接受,Celery会设置一些默认关键字参数。(您可以使用** kwargs接受它们,也可以专门列出它们)

@task
def do_job(path, task_id=None):
    cache.set(task_id, operation_results)

默认关键字参数列表记录在此处:http : //ask.github.com/celery/userguide/tasks.html#default-
keyword-arguments



 类似资料:
  • 问题内容: 我目前正在将celery与django结合使用,并且一切正常。 但是,如果服务器超载,我希望能够通过检查当前计划了多少个任务,使用户有机会取消任务。 我怎样才能做到这一点? 我正在使用Redis作为代理。 这在某种程度上与我的问题有关,但是我不需要列出任务,只需数一下它们即可:) 问题答案: 如果您的代理配置为,并且您的任务已提交到常规队列,则可以通过以下方式获得长度: 或者,从she

  • 问题内容: 我刚刚发现了有关配置选项(docs)的信息。默认值为4,但是(我相信)我希望预取尽可能少。我现在将其设置为1,这与我要查找的值足够接近,但是仍有一些我不理解的地方: 为什么这样预取一个好主意?我并没有真正找到原因,除非消息队列和工作线程之间存在大量延迟(就我而言,它们当前正在同一主机上运行,​​最糟糕的是最终可能在同一数据中的不同主机上运行)中央)。该文档仅提到了缺点,但没有解释优点是

  • 问题内容: 我将Redis作为经纪人使用Celery(3.0.15)。 有没有一种简单的方法来查询Celery队列中存在的具有给定名称的任务数? 并且,作为后续措施,是否可以取消Celery队列中存在的所有具有给定名称的任务? 我已经看过《监控和管理指南》,在那儿看不到解决方案。 问题答案:

  • 问题内容: 我一直在阅读文档并进行搜索,但似乎找不到直接的答案: 你可以取消已经执行的任务吗?(由于任务已开始,需要一段时间,因此需要取消一半) 我是从Celery FAQ的文档中找到的 但是我不清楚这是否会取消排队的任务,或者是否会杀死工作程序上正在运行的进程。感谢你能摆脱的光芒! 问题答案: 撤销将取消任务执行。如果任务被吊销,工人将忽略该任务并且不执行它。如果你不使用持久撤销,则可以在wor

  • Celery 是一个 Python 的任务队列,包含线程/进程池。曾经有一个 Flask 的集成, 但在 Celery 3 重构了内部细节后变得不必要了。本指导补充了如何妥善在 Flask 中使用 Celery 的空白,但假设你已经读过了 Celery 官方文档中的教程 使用 Celery 的首要步骤 安装 Celery Celery 提交到了 Python Package Index (PyPI

  • 问题内容: 我使用celery更新新闻聚合站点中的RSS feed。我为每个提要使用一个@task,看起来一切正常。 有一个细节我不确定如何处理:所有提要每分钟都使用@periodic_task更新一次,但是如果提要仍在启动新任务时从上一个定期任务更新,该怎么办?(例如,如果Feed确实很慢或离线,并且任务在重试循环中进行) 目前,我存储任务结果并按以下方式检查其状态: 也许我错过了一些使用芹菜机