Celery Worker


worker 이름 정하기

# -n worker이름@%n
celery -A aip worker --loglevel=info --concurrency=10 -n workertest@%n

multi processing

기본적으로 동시에 발생하는 process들은 multiprocessing이 제공됨

하지만 특정 개수를 정하고 싶을 경우

# --concurrency=개수
celery -A aip worker --loglevel=info --concurrency=[number] -n workertest@%n

# 여기서 [number]는 index임 예를 들어, 3이라고 적을 경우 0, 1, 2, 3 총 4개가 생김
ps -ef|grep celery
명령어로 확인해보면 알 수 있음

프로세스 수 (다중 처리 / 프리 포크 풀)

<aside> 💡 일반적으로 풀 프로세스가 많을수록 더 좋지만 풀 프로세스를 추가하면 성능에 부정적인 영향을 미치는 컷오프 지점이 있습니다. 여러 작업자 인스턴스를 실행하는 것이 단일 작업자를 사용하는 것보다 더 잘 수행 할 수 있다는 증거도 있습니다. 예를 들어 각각 10 개의 풀 프로세스가있는 3 명의 작업자. 응용 프로그램, 작업 부하, 작업 실행 시간 및 기타 요인에 따라 달라 지므로 자신에게 가장 적합한 숫자를 찾기 위해 실험해야합니다.

</aside>

multi worker(화면에 로그는 뜨지 않음)

# 실행
celery multi start [worker name] -A proj -l info

# 중지
celery multi stop [worker name] -A proj -l info

# 받은 작업은 모두 실행하고 중지
celery multi stopwait [worker name] -A proj -l info

multi queue

-Q task1,task2

AutoScale

celery -A aip worker -Q train --loglevel=info --autoscale=최대개수, 최소개수