使用celery获取 tasks.get() 该方法无法获取数据并给出错误。

获取方法:

tasks.get(),

异常现象:

TypeError: _iter_meta() got an unexpected keyword argument 'timeout'
 

解决方法:

添加sleep():

while not res.successful():
    sleep(0.1)
print(
    res.get(), # returns result
    res.id, # returns task id (str)
    res.status, # returns task status (str)
    res.info # returns task information
)

# Imports
from tasks import length
from time import sleep

# 0
res = length.delay('alternative_0')
while not res.status == 'SUCCESS':
    sleep(0.5)
# result.wait(timeout=None, interval=0.5) is the same \
# thing as the above code!
print(
    res.get(), # returns result
    res.id, # returns task id (str)
    res.status, # returns task status (str)
    res.info # returns task information
)
# 1
res = length.delay('alternative_1')
while not res.ready():
    sleep(0.3)

print(
    res.get(),
    res.task_id, # returns task id (str)
    res.ready(), # returns task is ready? (boolean)
    res.info
)
# 2
res = length.delay('alternative_2')
while not res.successful():
    sleep(0.1)

print(
    res.get(),
    res.id,
    res.successful(), # returns task is ready? (boolean)
    res.info
)

# OUTPUT

# 13 cdece656-372b-46c2-9956-5b6c8a296a7f SUCCESS 13
# 13 1634167e-9aee-42c3-8bd9-828b34525a99 True 13
# 13 f086e8f7-7a1b-42b6-98f3-362f43a1cbfd True 13

然后获取数据就正常。

原因:

tasks方法不能执行它的任务,我们自己可以选择等待,直到函数完成。

参考:

https://www.erdoganyoksul.com/turkish_topics/2020/03/09/iter_meta.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值