私はジャンゴセロリを使用しています。大きなビデオファイルをダウンロードする必要があります。ファイルのダウンロードが完了したら、データベースを更新したいと考えています。タスクが完了したときに、別のタスクではなく、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)
セロリのタスクが完了した後にオブジェクトを更新する別の方法があれば、それにも興味があります。
v = Video.objects.latest()
PS:代わりに渡そうとしたv = Video.objects.latest().id
ので、途中でインスタンスを更新できましたが、セロリは文字列ではなくオブジェクトだったので気に入らなかったのです。エラーは発生しませんでしたが、呼び出すたびa.ready
に False が返されました。