2012-08-01 16 views
6

Biz Danışman arkasında kereviz çalışan veCeleryd işlemlerinin sayısı --concurrency ayarına bağlıdır mu?

celeryd --events --loglevel=INFO --concurrency=2 

Bu ile başlar, bununla birlikte, en fazla üç kat daha derin olan ve 7 celeryd işlemleri (Danışman birkaç çoğaltılır bir celeryd olarak çoğaltılır kadar içeren bir yöntem grafik oluşturur Diğerleri, yine süreçleri doğurur. Makinemiz iki adet işlemci çekirdeğine sahiptir.

Tüm bu işlemler görevler üzerinde çalışıyor mu? Belki bazıları sadece işçi havuzları mı? -Concurrency ayarı, gerçekte ortaya çıkan işlem sayısına nasıl bağlanır? --concurrency başladı 2.

gerçek süreçler ise

cevap

4

Sen 7 süreçleri olmamalıdır geçerli:

  • Delegeler işçi havuzuna çalışmak ana tüketici işlemi

  • İşçi havuzu (bu, --concurrency kararlarıdır)

Bu, iki eşzamanlılık ile 3 işlemdir. force_execv (eğer REDIS veya RabbitMQ göre bazı diğer ulaşım kullandığınız ı varsayılan olarak olan) etkin olup olmadığını

Ayrıca semaforları temizlemek için kullanılan çok hafif süreç başlatılır.

Bazı durumlarda işlem listelemelerinin de konuları içerdiğini unutmayın. çalışanı, CELERY_DISABLE_RATE_LIMITS etkinleştirilmediği sürece her zaman başlatılan bir Mediator iş parçacığı dahil olmak üzere, rabbitmq/redis, dışındaki aktarımları kullanan birkaç iş parçacığı başlatabilir.

+0

Bu benim deneyimimle eşleşmiyor. Ben --concurrency = 1 --beat 'var, ancak 4 celeryd süreçleri ortaya çıkıyor. – Cerin

+0

"DatabaseTransport" ve Celery 3.0 kullanıyorum ve "--concurrencry = 1" ile OP durumunda olduğu gibi 6 işlem elde ediyorum. –

+0

@asksol Ayrıca, --concurrency = 1 ve iki işçiyle birlikte 4 celeryd procs yaşadım. Bunun neden olduğunu merak ediyorum, çok teşekkürler. – fpghost

İlgili konular