2013-04-03 5 views
2

배포 프로세스는 프로세스 목록의 모든 셀러리 처리에 대해 kill을 사용하여 셀러리를 다시 시작합니다.셀러리 작업자가 손실 됨

때때로 샐러리 로그에 "작업자가 손실되었습니다"가 표시됩니다. 이 경우 작업이 실행 중일 경우 작업을 다시 실행하거나 손실됩니까? 우리는 redis를 사용하고 있습니다.

답변

3

기본적으로 SIGTERM을 각 샐러리 작업자에게 보내야합니다. http://docs.celeryproject.org/en/latest/userguide/workers.html#stopping-the-worker.

프로세스를 종료하고 작업을 다시 시작하려면 작업자가 작업을 성공적으로 완료하지 못하고 중단하는 경우 작업을 다시 쿼리로 반환하는 ACK_LATE를 설정할 수 있습니다. http://docs.celeryproject.org/en/latest/configuration.html?highlight=acks_late#celery-acks-late

+0

감사합니다. 우리는 슈퍼 오래된 셀러리 버전을 실행 중이므로 업그레이드가 좋은 생각 일 수 있습니다. 나는 늦은 승인이 당신의 큐만큼 신뢰할 만하다는 것을 짐작하고있다. 우리는 redis 때문에, 여기 RabbitMQ로 전환하는 것이 좋은 생각 일 수 있습니다. 또한, 그 페이지에서 읽고 재시도가 ACK_LATE 대 옵션이지만,이 솔루션은 우리에게 셀틱을 재시작하는 경우 django를 재시작 할 가능성이 높으므로 수행 할 앱이 없기 때문에이 솔루션이 유용 할 것이라고 메모 할 수 있습니다 다시 시도하십시오 ... –

+0

ACK_LATE를 지적 해 주셔서 감사합니다. – ChillarAnand