django-celery를 사용하고 있습니다. 큰 비디오 파일을 다운로드해야합니다. 파일 다운로드가 완료되면 데이터베이스를 업데이트하고 싶습니다. django 코드를 호출하는 콜백을 추가하는 방법이 있습니까? 다른 작업이 아니라 작업이 완료되었습니다. 셀러리 작업이 완료된 후, 나는 또한에 관심이있을 것 객체를 업데이트하는 또 다른 방법이 있다면 내 이상적인 코드는 ... 같은Celery에서 지연 콜백
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().id
을 전달하려고 시도 했으므로 인스턴스를 업데이트 할 수 있었지만 셀러리는 객체가 아니고 문자열이기 때문에 마음에 들지 않았습니다. 오류가 발생하지 않았지만 a.ready
을 호출 할 때마다 False가 반환되었습니다.
개체 ID를 전달하지 않고 작업이 끝날 때 데이터베이스를 가져오고 업데이트하지 않는 이유는 무엇입니까? – balsagoth