2014-05-20 5 views
1

일부 네임 스페이스 (예 : 사용자 ID)가 있어야하는 샐러리 작업을 생성해야합니다. 그래서 나는큐가 실행 중인지 샐러리 검사

scrapper_start.apply_async((request.user.id,), queue=account.Account_username) 
app.control.add_consumer(account.Account_username, reply=True) 

하여 부르게 해요 그리고 작업이 다른 작업에서 반복적으로 생성합니다. 이제 대기열의 작업이 실행 중인지 확인해야합니다. redis로리스트의 길이를 체크하려고 시도한 결과 셀러리가 실행되기 전에 true 값을 반환합니다. 이 문제를 해결하는 방법. 대기열 또는 소비자가 실행 중이거나 이미 비어있는 경우에만 확인하면됩니다. 감사합니다.

답변

2

대기열을 검사하려는 경우 명령 줄 자체에서이 작업을 수행하십시오.

from celery.task.control import inspect 
i = inspect('scrapper_start') 
i.active() # get a list of active tasks 

현재 실행중인 항목 이외에 다음을 수행 할 수도 있습니다.

i.registered() # get a list of tasks registered 
i.scheduled # get a list of tasks waiting 
i.reserved() #tasks that has been received, but waiting to be executed 

이 명령 줄 검사는 한 번만 확인하려는 경우 유용합니다.

계속해서 모니터하고 싶다면 Flower을 사용하면 작업자를 모니터링하는 데 유용한 인터페이스를 제공 할 수 있습니다. enter image description here

관련 문제