我目前正在使用Django DB作为后端测试Django Celery结果。
当我的Django视图调用celery任务时,它会在Django DB中正确添加,并且任务由Celery worker执行。我还可以使用以下代码获取任务ID:
def contact(request):
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
res = mailer.delay(
cd['subject'],
cd['message'],
cd.get('email', 'noreply@gmail.com'),
['seb.pouplin@gmail.com'])
cel_taskid = res.task_id
result = AsyncResult(cel_taskid)
print(result.state)
return HttpResponse(cel_taskid)
但是,每当我尝试获取任务状态,状态或ready()标志时,我都会遇到以下异常:
AttributeError:'DisabledBackend'对象没有属性'_get_task_meta_for'
使用Django-DB获取任务详细信息或以其他方式检索它们是否存在任何限制?
提前致谢
答案 0 :(得分:0)
我可以使用django_celery_results中的TaskResult模型访问Celery任务结果。
最佳解决方案是在任务装饰器中添加(bind=True)
以访问任务对象属性。