来自芹菜延迟的回调



我正在使用django-celery。 我需要下载一个大视频文件。 我想在文件下载完成后更新我的数据库。 有没有办法添加一个回调,当任务完成时,它将调用 django 代码,而不是另一个任务? 我的理想代码看起来像这样...

from video.tasks import video_download
from video.models import Video
def my_callback(v):    
    v.status = "downloaded"
    v.save()
def download_http(request):
   v = Video.objects.latest().id #this is a string
   a = video_download.delay(v, my_callback)

如果在芹菜任务完成后有另一种方法可以更新对象,我也会对此感兴趣。

PS:我尝试传入v = Video.objects.latest()而不是v = Video.objects.latest().id,这样我就可以沿途更新实例,但芹菜不喜欢它,因为它是一个对象而不是字符串。 虽然它没有抛出任何错误,但每次我调用a.ready它都返回 False。

你可以从任务中调用你的 Django 代码。例如:

def video_download(v):
     from video.models import Video
     v = Video.objects.get(pk=v)
     do_download(v)
     v.status = "downloaded"
     v.save()

相关内容

  • 没有找到相关文章