【发布时间】:2015-08-06 09:39:46
【问题描述】:
问题
AsyncResult 在任务完成后返回 NoneType。
问题
完成后如何获取芹菜任务状态?
说明
下面是获取 celery 任务状态的 django 视图代码。我使用此视图从我的客户端应用程序中查询任务进度。它工作正常,直到任务完成。之后 AsyncResult 每次我为我的任务调用它时都会返回 NoneType,并且我收到以下错误:
'NoneType' 对象没有属性 'get'
# Celery configuration
celery = Celery('tasks', backend='amqp', broker="amqp://")
# My django view for getting task state
def GetTaskStatus(request):
task = AsyncResult(request.body["taskid"], app=celery)
if task.state == 'PENDING':
data = {
'state': task.state,
'progress': task.info.get("progress", 0)
}
elif task.state != 'FAILURE':
data = {
'state': task.state,
'progress': task.info.get("progress", 0)
}
else:
data = {
'state': task.state,
'error': "something went wrong",
'progress': task.info.get("progress", 0)
}
response = GetHttpResponseJSON(ResponseCode.OK, data)
return response
【问题讨论】:
-
你有没有设法解决这个问题?
-
我遇到了同样的问题,您是否能够解决这个问题?
-
我确定我做到了,不幸的是,很久以前我不记得如何...抱歉没有提供更多帮助。
-
@VinayKadalagi 你的任务必须返回一些东西。假设它返回一个简单的字符串:“此任务已结束”。好吧,这是你的任务结果。如果任务没有返回任何内容,您将拥有 None ,因此...NoneType。
标签: python rabbitmq django-celery