2017-02-02 3 views
0

나는이 같은 3 개 셀러리 작업이 있습니다셀러 리 작업 콜백을 중지하는 방법?

@app.task 
def main_func(): 
    if this: 
     func1.delay() 
    else: 
     func2.delay() 

@app.task 
def func1(): 
    ... do something ... 

@app.task 
def func2(): 
    ... do something ... 

기능 main_func는 매 30 초를 수행 할 예정이다. 어떤 조건이 충족되면 func1의 셀러리 태스크를 호출하고 else는 func2의 태스크를 작성합니다.

이제 셀러리 작업자를 실행하고 main_func 함수가 실행될 때 func1 또는 func2으로 다시 호출되어 루핑이 발생합니다.

이제 로그에서 작업은 연속 실행 사이에 30 초의 시간차가 있어야하지만 루핑으로 인해 하나씩 차례대로 실행됩니다.

이 상황을 어떻게 방지 할 수 있습니까?

참고 : 나는 셀러리 4.0.2

답변

0

사용`celery.current_app.send_task ('mymodel.tasks.mytask'인수의 = [ARG1, ARG2,에서 arg3을])

이 CURRENT_APP이 어디에 사용하고 셀러리 모듈의 속성. mymodel.tasks는 tasks.py에 대한 경로입니다.

관련 문제