首页 > 编程问答 >在 Celery 任务中获取 task_id

在 Celery 任务中获取 task_id

时间:2024-07-24 12:57:49浏览次数:5  
标签:python object celery

这可能是一个愚蠢的问题,但它让来自 Ruby 背景的我感到困惑。

当我尝试打印它时,我有一个看起来像这样的对象。

print celery.AsyncResult.task_id
>>><property object at 0x10c383838>

我期望 task_id 属性的实际值是打印在这里。我如何获得实际值?

更新1

@celery.task
def scan(host):
    print celery.AsyncResult.task_id
    cmd = 'ps -ef'
    cm = shlex.split(cmd)
    scan = subprocess.check_output(cm)
    return scan

致以诚挚的问候。


没有以正确的方式访问 task_id 。正在查看 类属性 celery.AsyncResult.task_id ,而不是 实例属性

在 Celery 任务内部,可以通过 self.request.id 访问 task_id

更新后的代码如下:

@celery.task
def scan(host):
    print(self.request.id)  # 打印 task_id
    cmd = 'ps -ef'
    cm = shlex.split(cmd)
    scan = subprocess.check_output(cm)
    return scan

在你的任务函数中, self 指的是 celery.Task 的实例。 self.request 是一个包含有关当前任务的信息的对象,包括 id ,它是 task_id

其他访问 task_id 的方法

  • 在任务外: 如果在调用任务的外部需要 task_id ,则可以通过调用 delay() apply_async() 后返回的 AsyncResult 对象访问它: python result = scan.delay(host) task_id = result.id print(task_id)

  • 使用 bind=True 装饰器: 如果需要访问任务实例上的其他属性,可以使用 @celery.task(bind=True) 装饰器。这将把任务实例作为第一个参数传递给的任务函数。 python @celery.task(bind=True) def scan(self, host): print(self.request.id) # 打印 task_id # ... 的代码 ...

标签:python,object,celery
From: 18872854

相关文章

  • python之名称空间和作用域(关键字:global和nonlocal的使用)
    文章目录前言1、名称空间和作用域1.1引言1.2名称空间1.2.1内置名称空间1.2.2全局名称空间1.2.3局部名称空间1.2.4名称空间的产生和销毁顺序1.3作用域1.3.1全局作用域1.3.2局部作用域1.3.3名字的查找顺序1.4关键字:global1.5关键字:nonlocal前言本篇文章......
  • 用于 isinstance() 检查的 dict_keys 的显式 python3 类型是什么?
    在Python3中,我应该使用什么类型来检查字典键是否属于它?>>>d={1:2}>>>type(d.keys())<class'dict_keys'>所以我很自然地尝试了这个:>>>isinstance(d.keys(),dict_keys)Traceback(mostrecentcalllast):File"<stdin>",......
  • 初学Python时需要认识清楚的几个概念:对象、函数、圆括号给、点取、方括号取
    这是我在自学Python的过程中自己挑选和提炼出来的几个重要的概念,之所以特意介绍这些概念,其中包含了我自己的思维方式和我对Python设计理念的认识,有其独特性和局限性。我希望这篇文章能够给喜爱Python的朋友们带来一些启发。1、对象(Object)对象是Python编程的基本单元。就像音是......
  • 如何接受文件或路径作为python中方法的参数
    我正在尝试编写一个方法,该方法将接受打开的文件myFile=open("myFile.txt")obj.writeTo(myFile)myFile.close()或带有路径的字符串obj.writeTo("myFile.txt")该方法的实现如下:defwriteTo(self,hessianFile):ifisinstance(hessianFile,file):pr......
  • Python,“pathlib.Path.open()”方法和内置函数“open()”不返回“typing.IO”的实例
    我读过一些其他答案,它们似乎与现实生活中发生的事情相矛盾。尝试以下操作:fromtypingimportIOfrompathlibimportPathexample_path=Path(r"D:\Example.txt")withexample_path.open("r")asf:print(isinstance(f,IO))withopen(example_path)a......
  • 单目三维内容生成系列—Zero-1-to-3: Zero-shot One Image to 3D Object
    文章目录1.概述2.背景介绍3.方法3.1学习控制相机视角3.2视角条件扩散3.33D重建3.4数据集4.实验评测4.1任务4.2基线4.3基准和指标4.4新视角合成结果4.53D重建结果4.6从文本到图像到3D5.讨论1.概述我们介绍了Zero-1-to-3框架,该框架仅需一张RGB图像即......
  • 【Dison夏令营 Day 28】用 Python 创建恐龙游戏
    谁没有玩过谷歌著名的“恐龙游戏”?也许每个人都玩过这个游戏。今天,在这篇文章中,我们将帮助你用Python开发一个恐龙游戏。本教程将深入讲解每一行代码,并提供参考资料。我们将尽力让读者详细、透彻地理解这个项目。Python版恐龙游戏的任务记录包括图片文档和Python资料......
  • Python 无法 pickle 自定义类型
    我正在尝试在ProcessPool中运行一个函数,该函数将通过读取python文件并运行生成的类中的方法来加载一些自定义类。我遇到的错误是TypeError:cannotpickle'generator'object该方法需要返回一个生成器。我该如何解决这个问题,谢谢。我用谷歌搜索但没有运气。......
  • python 语法无效?
    我试图编写一些Python代码,但由于某些奇怪的原因,它重复了无效的语法,我不知道最大的问题是什么。这些行是文件中唯一的代码行。Age=int(input("Howoldareyou?:"))ifAge>=18:print("YouareaAdult!")我尝试更改行,因为这似乎是我的生气,但它没有做任何帮......
  • 如何在Python的matplotlib中将条形标签绘制到右侧并为条形标签添加标题?
    我已经在python中的matplotlib中创建了一个图表,但是以下代码中的最后一行不允许在图表之外对齐条形标签。importmatplotlib.pyplotaspltg=df.plot.barh(x=name,y=days)g.set_title("Dayspeopleshowedup")g.bar_label(g.containers[0],label_type='edge')我得......