2012-02-06 22 views
15

क्या Celery में प्रति कार्य स्तर पर समरूपता (एक साथ श्रमिकों की संख्या) सेट करना संभव है? मैं कुछ और बढ़िया दिख रहा हूं कि CELERYD_CONCURRENCY (जो पूरे डिमन के लिए समरूपता सेट करता है)।अजवाइन: प्रति कार्य समवर्ती सीमाएं (प्रति कार्य श्रमिकों के #)?

उपयोग परिदृश्य है: मेरे पास एक ही celerlyd विभिन्न प्रकार के कार्यों को चलाने के साथ बहुत अलग प्रदर्शन विशेषताओं के साथ चल रहा है - कुछ तेज़ हैं, कुछ धीमे हैं। कुछ के लिए मैं जितना जल्दी कर सकता हूं उतना करना चाहता हूं, दूसरों के लिए मैं यह सुनिश्चित करना चाहता हूं कि किसी भी समय केवल एक उदाहरण चल रहा हो (यानी 1 की सहमति)।

उत्तर

25

आप अलग-अलग कतारों के कार्यों को रूट करने के लिए automatic routing का उपयोग कर सकते हैं, जो विभिन्न समवर्ती स्तरों के साथ सेलेरी श्रमिकों द्वारा संसाधित किया जाएगा।

celeryd-बहु शुरुआत तेजी से धीमी गति से -c: धीमी गति से 3 -c: तेजी से 5

यह आदेश की शुरूआत 2 अजवाइन कार्यकर्ताओं क्रमशः तेजी और 3 के साथ धीमी कतारों और 5 संगामिति स्तरों सुन ।

CELERY_ROUTES = { "tasks.a": { "कतार": "धीमी"}, "tasks.b": { "कतार": "तेज"}}

कार्य टाइप tasks.a के साथ क्रमशः धीमी कतार और tasks.b कार्यों को तेजी से कतार द्वारा संसाधित किया जाएगा।

+1

धन्यवाद 0x00mh। इसलिए मैं कतारों पर समरूपता परिभाषित कर सकता हूं, लेकिन कार्यों पर नहीं। और मेरा मानना ​​है कि इसका मतलब है कि मैं कई सेलेरी डिमन्स शुरू कर रहा हूं। तो मुझे लगता है कि इसका मतलब है कि अलग-अलग डिमन का उपयोग किये बिना प्रति-कार्य समरूपता सेट करने का कोई तरीका नहीं है? – Parand

+0

CELERYD_CONCURRENCY परिभाषित करता है कि कितनी प्रक्रियाएं (कार्यकर्ता प्रक्रियाएं) लॉन्च करने के लिए। श्रमिक प्रक्रिया ब्रोकर से संदेशों को स्वतंत्र रूप से उपभोग करती है। संदेश को निष्पादित करने के लिए कार्य का नाम होता है। – mher

संबंधित मुद्दे