2017-02-27 4 views
1

셀로리를 장고에 설정하는데 문제가 있습니다.셀러리에서 여러 프로세스 시작하기

이 내가 장고 - 셀러리 시작하는 방법입니다 : 작업의

python manage.py celery worker --autoscale=10,2 

예 :

@task 
def test(i): 
    print "ITERATION {} START".format(i) 
    time.sleep(10) 
    print "ITERATION {} END".format(i) 
    return True 

을 내가 함께이 작업을 호출

for i in range(10): 
    test.delay(i) 

내가 뭘 기대 대기열에 10 개의 작업을 보내면 각 작업마다 하나씩 10 개의 프로세스가 열립니다. 실제로 어떻게됩니까

프로세스의 임의의 숫자들이을 마친 후 이러한 4 개 가지 작업이 다른 3 시작을, 또 다른 3 시작과 을 완료 보통 4 후 시작되는 것입니다. 이는 완료하는 데 더 오랜 시간이 걸리는 작업 인 경우에도 발생합니다. 2 분.

누군가가이 동작을 설명 할 수 있습니까? 자동 스케일 상한이 허용하는 경우 즉시 모든 작업을 시작할 수 있습니까?

또한 autoscale의 하한은 2이지만 서버를 시작하면 3 개의 프로세스가 실행됩니다. 왜 그런가요?

플랫폼 : OpenWRT, 듀얼 코어 프로세서, 2GB RAM.

+0

샐러리 환경의 동시성 설정을 점검하여 작업을 제한하는 것이 있는지 확인할 수 있습니다. – postoronnim

답변

0

기본적으로 셀리는 코어 당 작업자를 생성하므로 4 코어가있는 시스템에서 실행 중이라고 가정합니다. 자세한 내용은 --concurrencydocumentation을 참조하여 플래그를 구성 할 수 있습니다.

그런 다음 3 개의 프로세스가 시작된 다음 2 개가 시작되었다고 말하면 작업은 다른 프로세스가 완료되면 다시 시작되며 프리 페치 정책으로 인해 때때로 지연 될 수도 있습니다. 자세한 내용은 this thread을 참조하십시오.

셀러리는 주 프로세스를 시작하고 X 작업자 - 주 프로세스가 작업자를 관리하고 필요할 때 다시 시작하고 작업자를 작업자에게 보냅니다. 따라서 근로자가 2 명인 경우 3 가지 프로세스가 있습니다.

+0

기계는 듀얼 코어입니다. 당신은 주요 프로세스 및 근로자에 ​​대해 옳습니다. – bmiljevic

+0

어떻게 샐러리를 운영하고 있습니까? 더 많은 정보를 제공하십시오. 아직 궁금한 점이 있습니까? 내가 도와 줬어? –

관련 문제