셀러리 3.0.12를 사용하고 있습니다.파이썬 셀러리 작업이 백엔드없이 완료되었습니다.
두 대기열이 있습니다 : Q1, Q2.
일반적으로 Q2에 들어가는 하위 작업을 호출하는 주 작업을 Q1에 넣습니다. 하위 작업의 결과를 저장하고 싶지 않습니다. 그래서 내 하위 작업에는 데코레이터 @celery.task (ignore_results = True)가 있습니다.
내 주요 작업은 이제 하위 작업이 완료 될 때까지 대기해야합니다. 나는 결과를 쓰지 않기 때문에. 사용할 수 없습니다 : AsyncResult. 하위 태스크가 백엔드에 상태를 저장하지 않고 완료 될 때까지 대기하도록 기본 태스크에서 대기하는 방법이 있습니까? AsyncResults를 사용하는 모든 시도는 성공한 것이 아니며 백엔드에 의존합니다. get()도 백엔드에 의존합니다. 코드에서
전체 기사 :
@celery.task(ignore_result=True)
def subtask():
#Do something
@celery.task
def maintask():
# Do something
# Call subtask on Q2:
res = subtask(options={'queue':'Q2'}).delay()
# Need to wait till subtask finishes
# NOT WORKING (DOES NEVER RETURN)
res.get()
나는 셀러리 꽃과 함께 전체 응용 프로그램을 모니터링 그리고 난 그 하위가 successfuelly 마무리되어 볼 수 있습니다. 셀러리가 어떻게 그 상태를 감지 할 수 있습니까? 나는 그들의 코드를 찾아 보았지만 그들이 어떻게 탐지 하는지를 알 수 없었다.
감사합니다. 올바른 힌트였습니다. – foobar