在我的模型中,我有一个status
默认值为“处理”的字段。在 Django 管理界面中,用户单击“保存”按钮后,表单输入将传递给仅休眠 30 秒的 celery 任务。
30 秒后,我该如何:
- 判断celery任务是否成功?
- 更新模型的
status
字段从“正在处理”到实际状态(例如:已完成、失败?
模型.py
from django.db import models
class Scorecard(models.Model):
name = models.CharField(max_length=100, unique=True)
status = models.CharField(max_length=20, default='Processing')
def __str__(self):
return self.name
admin.py
from django.contrib import admin
from scorecards.models import Scorecard
from scorecards.tasks import get_report
class ScorecardAdmin(admin.ModelAdmin):
list_display = ['name', 'status']
def save_model(self, request, obj, form, change):
if form.is_valid():
data = form.cleaned_data
name = data['name']
get_report.delay(name)
super().save_model(request, obj, form, change)
admin.site.register(Scorecard, ScorecardAdmin)
tasks.py
from __future__ import absolute_import, unicode_literals
from celery import shared_task
from time import sleep
@shared_task
def get_report(name):
sleep(30)
celery 任务的实时状态更新status
每 x 时间间隔进行一次字段就很好了,但现在我只是很好奇如何做到这一点。