2012-08-01 22 views
6

Chúng tôi đang chạy cần tây đằng sau Supervisor và bắt đầu nó vớiSố lượng quy trình celeryd có phụ thuộc vào cài đặt --concurrency không?

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

này, tuy nhiên, tạo ra một biểu đồ quá trình đó là lên đến ba lớp sâu và chứa lên đến 7 quá trình celeryd (Supervisor spawns một celeryd, mà spawns nhiều những người khác, mà một lần nữa đẻ trứng quy trình). Máy của chúng tôi có hai lõi CPU.

Tất cả các quy trình này có hoạt động trên các tác vụ không? Có lẽ một số người trong số họ chỉ là hồ bơi công nhân? Làm thế nào là thiết lập --concurrency kết nối với số lượng các quá trình thực sự sinh ra?

Trả lời

4

Bạn không nên có 7 quy trình nếu --concurrency là 2.

Các quy trình thực tế bắt đầu là:

  • Quá trình tiêu dùng chính

    Các đại biểu làm việc đến hồ bơi công nhân

  • Hồ bơi công nhân (đây là số --concurrency quyết định)

Vì vậy, đó là 3 quy trình có đồng thời hai.

Bên cạnh đó là một quá trình rất nhẹ sử dụng để dọn dẹp Cột được bắt đầu nếu force_execv được kích hoạt (mà nó là theo mặc định i bạn đang sử dụng một số phương tiện giao thông khác hơn redis hoặc RabbitMQ).

Lưu ý rằng trong một số trường hợp, danh sách xử lý cũng bao gồm chuỗi. nhân viên có thể bắt đầu một số chủ đề nếu sử dụng phương tiện giao thông khác ngoài thỏmq/redis, bao gồm một chuỗi Hòa giải luôn bắt đầu trừ khi CELERY_DISABLE_RATE_LIMITS được bật.

+0

Điều này không phù hợp với trải nghiệm của tôi. Tôi có '--concurrency = 1 --beat', nhưng 4 quá trình celeryd được sinh ra. – Cerin

+0

Tôi sử dụng 'DatabaseTransport' và Celery 3.0, và với' --concurrencry = 1' tôi nhận được 6 quy trình, tương tự như trong trường hợp OP. –

+0

@asksol Tôi cũng trải nghiệm 4 proeryd procs khi --concurrency = 1 và với hai công nhân. Tôi tò mò tại sao đó là, cảm ơn nhiều. – fpghost