Kereviz kullanarak birden fazla işçi çalıştırmak


11

Rabbitmq'den okumam ve tek bir sistemde Kereviz kullanarak paralel olarak görev yürütmem gerekiyor.

[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] ...

Sadece 1 işçi sürekli çalışıyor .. yani birbiri ardına sırayla dikişler. Kereviz'i birden çok işçiyi paralel çalışacak şekilde nasıl yapılandırabilirim?

Yanıtlar:


17

Şimdi MartinP'nin işçi yumurtlama çocuk süreçleri ile ilgili yorumunu takiben cevabımı değil cevabımı güncelledim:

Kereviz workerve worker processesfarklı şeyler ( referans için bunu okuyun ).

Bir işçi başlatıldığında belirli sayıda alt süreç ortaya çıkar.

Bu işlemlerin varsayılan sayısı, o makinedeki birkaç çekirdeğe eşittir.

Linux'ta çekirdek sayısını şu yolla kontrol edebilirsiniz:

$ nproc --all

Aksi takdirde, kendiniz belirtebilirsiniz, örneğin:

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

Yukarıdaki örnekte, 2 alt süreci ortaya çıkarabilecek bir işçi bulunmaktadır. Normalde makine başına tek bir işçi çalıştırmanız önerilir ve eşzamanlılık değeri kaç işlemin paralel olarak çalışacağını tanımlar, ancak birden fazla çalışanın çalışması gerekiyorsa, bunları aşağıda gösterildiği gibi başlatabilirsiniz:

$ 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

Daha fazla bilgi için kereviz belgelerine bakın


3
concurency parametresi iş parçacıklarını çalıştırmaz. Alt süreçleri varsayılan olarak çalıştırır, böylece görevleri paralel olarak işler - docs.celeryproject.org/en/latest/reference/…
MartinP

Eşzamanlılık ve iş parçacıkları birbiriyle nasıl ilişkilidir, varsayılan eşzamanlılık makinenin çekirdek sayısı ise, iş parçacığı sayısı ne olur? Yapılandırılabilir mi?
Thomas John

@ThomasJohn Bence iş parçacıkları için varsayılan sayı hala makinenin çekirdek sayısıdır. Genellikle, iş parçacığı tabanlı çalışanlar için --concurrency bayrağını yüksek ayarlamak istersiniz.
FragLegs


0

Görünüşe göre çalışanınız tek bir işlem / iş parçacığı çalıştırıyor. Büyük olasılıkla , işçiyi birden çok (paralel) işçi örneği oluşturmaya başlarken --concurrencyveya -cargümanını eklemeniz gerekir .

celery -A proj worker -c 4
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.