Celery를 사용하여 여러 작업자 실행


11

Rabbitmq에서 읽고 단일 시스템에서 Celery를 사용하여 작업을 병렬로 실행해야합니다.

[2014-12-30 15:54:22,374: INFO/Worker-1] ...   
[2014-12-30 15:54:23,401: INFO/Worker-1] ...
[2014-12-30 15:54:30,878: INFO/Worker-1] ...
[2014-12-30 15:54:32,209: INFO/Worker-1] ...
[2014-12-30 15:54:33,255: INFO/Worker-1] ...
[2014-12-30 15:54:48,445: INFO/Worker-1] ...
[2014-12-30 15:54:49,811: INFO/Worker-1] ...
[2014-12-30 15:54:50,903: INFO/Worker-1] ...
[2014-12-30 15:55:39,674: INFO/Worker-1] ...
[2014-12-30 15:55:41,024: INFO/Worker-1] ...
[2014-12-30 15:55:42,147: INFO/Worker-1] ...

그것은 단지 1 명의 노동자 만 항상 달리고 있습니다. 즉, 순차적으로 순차적으로 작동합니다. 여러 작업자가 병렬로 실행되도록 Celery를 구성하려면 어떻게해야합니까?

답변:


17

스레드가 아닌 작업자 생성 자식 프로세스에 대한 MartinP의 의견에 따라 답변을 업데이트했습니다.

셀러리 workerworker processes는 다른 것들입니다 ( 참조 용으로 읽으십시오 ).

워커가 시작되면 특정 수의 자식 프로세스가 생성됩니다.

이러한 프로세스의 기본 수는 해당 시스템의 여러 코어와 같습니다.

Linux에서는 다음을 통해 코어 수를 확인할 수 있습니다.

$ nproc --all

그렇지 않으면 다음과 같이 직접 지정할 수 있습니다.

$ celery -A proj worker --loglevel=INFO --concurrency=2

위의 예제에는 2 개의 자식 프로세스를 생성 할 수있는 한 명의 작업자가 있습니다. 일반적으로 머신 당 단일 작업자를 실행하는 것이 좋으며 동시성 값은 병렬로 실행할 프로세스 수를 정의하지만 여러 작업자를 실행해야하는 경우 아래와 같이 시작할 수 있습니다.

$ celery -A proj worker -l info --concurrency=4 -n wkr1@hostname
$ celery -A proj worker -l info --concurrency=2 -n wkr2@hostname
$ celery -A proj worker -l info --concurrency=2 -n wkr3@hostname

자세한 내용은 셀러리 문서 를 참조하십시오


3
동시성 매개 변수는 스레드를 실행하지 않습니다. 기본적으로 자식 프로세스를 실행하므로 작업을 병렬로 처리합니다. – docs.celeryproject.org/en/latest/reference/…
MartinP

기본 동시성이 시스템의 코어 수인 경우 동시성과 스레드는 서로 어떻게 관련되어 있습니까? 스레드의 수는 얼마입니까? 구성 할 수 있습니까?
Thomas John

@ThomasJohn 스레드의 기본 수는 여전히 머신의 코어 수 라고 생각 합니다. 일반적으로 스레드 기반 작업자에 대해 --concurrency 플래그를 높게 설정하려고합니다.
FragLegs

0

나는 이것을 발견했다

http://docs.celeryproject.org/en/latest/reference/celery.html?highlight=parallel

Canvas 프리미티브를 찾아 병렬 실행을위한 그룹을 만드는 방법을 확인할 수 있습니다.

class celery.group (task1 [, task2 [, task3 [,… taskN]]]) 병렬로 실행할 태스크 그룹을 작성합니다.

그렇지 않으면 좋은 방법은 IRC 채널로 가서 특별한 질문을하는 것입니다. 일반적으로 그 점을 잘 알고 도움을 줄 수있는 사람들이 있습니다.


0

작업자가 단일 프로세스 / 스레드를 실행중인 것 같습니다. 워커를 시작할 때 여러 (병렬) 워커 인스턴스를 생성하기 위해 --concurrency또는 -c인수 를 추가해야 할 수도 있습니다 .

celery -A proj worker -c 4
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.