gpt4 book ai didi

django - Celery 延迟回调

转载 作者:行者123 更新时间:2023-12-02 05:42:16 25 4
gpt4 key购买 nike

我正在使用 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)

如果在完成 celery 任务后还有另一种方法来更新对象,我也会对此感兴趣。

PS:我尝试传递 v = Video.objects.latest() 而不是 v = Video.objects.latest().id 这样我就可以更新一路上的实例,但 celery 不喜欢它,因为它是一个对象而不是字符串。虽然它没有抛出任何错误,但每次我调用 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()

关于django - Celery 延迟回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10302999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com