저는 파이썬 2.6, rabbitmq 백엔드 및 django에서 셀러리 2.4.1을 사용하고 있습니다. 작업자가 종료하면 작업을 올바르게 정리할 수 있기를 바랍니다. 제가 아는 한 당신은 작업 소멸자를 제공 할 수 없으므로 worker_shutdown 신호에 연결하려고했습니다.작업자 종료의 셀러리 작업에 알립니다.
참고 : AbortableTask은 데이터베이스 백엔드에서만 작동하므로 사용하지 마십시오.
from celery.signals import worker_shutdown
@task
def mytask(*args)
obj = DoStuff()
def shutdown_hook(*args):
print "Worker shutting down"
# cleanup nicely
obj.stop()
worker_shutdown.connect(shutdown_hook)
# blocking call that monitors a network connection
obj.stuff()
그러나 종료 훅은 절대로 호출되지 않습니다. Ctrl-C'ing 작업자가 작업을 죽이지 않고 수동으로 쉘에서 종료해야합니다.
이렇게 적절한 방법이 아닌 경우 작업을 정상적으로 종료하도록하려면 어떻게해야합니까?
어떤 아이디어 :
풀 노동자에 대한 정리 단계는 같은 뭔가를 사용할 수 있습니다 처리 추가하려면? –@RomanPodlinov -'revoke()''에 대한 Celery 문서를 살펴 보라. 선택적으로 작업자가 정리하기 위해 잡을 수있는 신호를 보낼 수있다. – RichVel
나는 그것을 얻지 않는다. '--soft-time-limit'이 끝난 후에 어떤 신호가 방출되고 있습니까? 그렇다면 어느 것입니까? –