2016-09-06 8 views
3

셀러리 3.1.23을 사용합니다.셀러리가 프로세스를 죽입니다

작업 코드는 매우 간단하다 :

@app.task(bind=True, max_retries=None, default_retry_delay=settings.CELERY_RECONNECT_TIME) 
def analize_text(self, **kwargs): 
    print 'test' 
    return 1 

내가 셀러리이 명령을 실행 :

셀러리 -A 작업 노동자를 --loglevel = 정보 --concurrency = 4 -n analize_text -Q analize.analize_text -Ofair

따라서 4 개의 CPU를 사용합니다. 문제는 셀러리가 주기적으로 작업자를 죽이고 새로운 셀을 시작한다는 것입니다. 새 작업자는 로그에 새 번호와 새 PID를가집니다. 내 로그는 다음과 같습니다. https://dpaste.de/N1Vk

왜 그럴까요? 이 버그인가?

답변

1

이것은 CELERY_MAX_TASKS_PER_CHILD에 따라 다르며, 즉 작업자가 재활용되기 전에 완료해야하는 작업 수입니다. 기본값은 제한이 없습니다.

http://docs.celeryproject.org/en/latest/configuration.html#std:setting-CELERYD_MAX_TASKS_PER_CHILD

그래서, 당신의 셀러리 구성은 따라서 귀하의 노동자들이 재활용지고, 일부 낮은 번호로 설정이 제한을 가지고있을 수 있습니다. 셀로리 stats에서 더 많은 정보를 볼 수 있습니다.

관련 문제