Python RuntimeError:从不在任务中调用result.get()
我的任务(检查Sberbank中的付款状态。如果没有捕获-重试检查):Python RuntimeError:从不在任务中调用result.get(),python,django,celery,Python,Django,Celery,我的任务(检查Sberbank中的付款状态。如果没有捕获-重试检查): 来自…celeryconf导入应用程序 从…起将客户端导入为sberbank 从…模型进口付款,交易 @应用程序任务(绑定=True,默认重试延时=60,时间限制=1200) def检查状态sberbank任务(自身、订单id、连接参数): sberbank_client=sberbank.client(auth=(连接参数['login'],连接参数['password']), 沙盒=连接参数['sandbox\u mod
来自…celeryconf导入应用程序
从…起将客户端导入为sberbank
从…模型进口付款,交易
@应用程序任务(绑定=True,默认重试延时=60,时间限制=1200)
def检查状态sberbank任务(自身、订单id、连接参数):
sberbank_client=sberbank.client(auth=(连接参数['login'],连接参数['password']),
沙盒=连接参数['sandbox\u mode'])
response=sberbank\U client.payment.get\U status(订单号=订单号)
txn=Transaction.objects.get(token=order\u id)
如果响应['actionCode']==0:
txn.is_success=True
txn.save()
payment=payment.objects.get(pk=txn.payment\u id)
payment.charge\u状态='已完全充电'
payment.captured\u amount=payment.total
payment.save()
返回“+str(订单id)”的“Sberbank成功付款”
其他:
重试(倒计时=60)
在日志文件中,我有:
错误celery.app.trace任务
销售.付款.网关.储蓄银行.任务.检查储蓄银行任务状态[bb384815-4a5b-49d7-bc29-114707f072b1]
引发意外错误:RuntimeError('在
任务!\n查看
)
[PID:26869:Thread-825]
回溯(最近一次调用上次):文件
“/home/korolev/saleor/lib/python3.6/site packages/芹菜/app/trace.py”,
第385行,在跟踪任务中
R=retval=fun(*args,**kwargs)文件“/home/korolev/saleor/saleor/payment/gateways/sberbank/tasks.py”,第行
26,在检查状态任务中
self.retry(倒计时=60)文件“/home/korolev/saleor/lib/python3.6/site packages/芹菜/app/task.py”,
第715行,在重试中
S.apply().get()文件“/home/korolev/saleor/lib/python3.6/site packages/芹菜/result.py”,
第1015行,输入get
assert_will_not_block()文件“/home/korolev/saleor/lib/python3.6/site packages/芹菜/result.py”,
第41行,在断言中\u将\u不\u块
引发运行时错误(E_WOULDBLOCK)
RuntimeError:从不在任务中调用result.get()!看见
如何修复此错误?如果您提供了默认重试时间,请删除else部分,然后重试。如果响应['actionCode']>0,60秒后将不会调用该任务