为什么AsyncResult在任务完成后返回NoneType?

时间:2015-08-06 09:39:46

标签: python rabbitmq django-celery

问题

AsyncResult在完成任务后返回NoneType。

问题

如何完成芹菜任务状态?

描述

以下是获取芹菜任务状态的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

1 个答案:

答案 0 :(得分:0)

您需要定义结果后端。请参阅the tutorial