में कतार स्थिति पर नजर रखने मैं निम्नलिखित सेट अप है:कैसे अजवाइन
- 100 कार्यकर्ताओं के साथ सामान्य कार्यकर्ता पूल
- 50 कार्यकर्ताओं के साथ कार्यकर्ता पूल उच्च प्राथमिकता
- मैं इतनी बड़ी संख्या सबसे क्योंकि इस्तेमाल किया समय अपने कार्यों बहुत लंबे समय समाप्ति के साथ आई/ओ के लिए इंतज़ार कर खर्च की
- दलाल
- के रूप में RabbitMQ का उपयोग करना (HTTP अनुरोध है कि प्रतिक्रिया करने के लिए 20 तक का समय लग सकता है कर) मैं init का उपयोग कर एक deamon के रूप में celeryd की स्थापना की है डीडी scripts celery'd GitHub से, निम्नलिखित मानकों के साथ:
CELERYD_OPTS="--time-limit=600 -c:low_p 100 -c:high_p 50 -Q:low_p low_priority_queue_name -Q:high_p high_priority_queue_name"
मेरे समस्या है, कभी कभी कतार में "वापस ऊपर" लगता है ... वह यह है कि यह लेने वाली कार्य बंद हो जाएगा। ऐसा लगता है कि इस के लिए परिदृश्यों के लिए कर रहे हैं:
- दलाल में "अस्वीकृत" संदेशों की धीमी गति का निर्माण हुआ है, भले ही
celery inspect active
दिखाएगा कि सभी कार्यकर्ताओं तक उपयोग किया जाता है - जो है, मैं सिर्फ होगा कुछ सक्रिय कार्य देखें - कतार बिल्डअप के बिना, नए कार्यों का उपभोग करना बंद कर देगा।
- जब अपने "मृत" राज्य में, कार्यकर्ता पर
strace
का उपयोग कर प्रक्रियाओं रिटर्न कुछ भी नहीं ... कार्यकर्ता से पूरी तरह से शून्य गतिविधि
मैं पर कोई जानकारी या संकेत का स्वागत करेंगे:
- कैसे मैं इसे डीबग कर सकता हूं। मैं देख सकता हूं कि कार्यकर्ता प्रक्रियाएं क्या कर रही हैं, यह देखने के लिए मैं
strace
का उपयोग कर सकता हूं, लेकिन अब तक यह कहने में उपयोगी रहा है कि कार्यकर्ता - मैं इसकी निगरानी कैसे कर सकता हूं, और संभवतः ऑटो-रिकवरी कर सकता हूं। अजवाइन (
flower
औरevents
के प्रबंधन के लिए कई टूल हैं लेकिन वे रीयल-टाइम दोनों उत्कृष्ट हैं - लेकिन कोई स्वचालित निगरानी/खतरनाक कार्यक्षमता नहीं है)। क्या मैं supervisord के साथ अपने स्वयं के निगरानी उपकरण लिखने से बेहतर हूं?
इसके अलावा, मैं Django-अजवाइन
क्या आपने अंततः इस समस्या को हल किया? – bouke
यह पुराना है, लेकिन बैक अप कतारों के दो कारण जिन्हें मैं जानता हूं: (1) आप कार्यों के भीतर कार्य बना रहे हैं। यदि आप ऐसा करते हैं, तो आप अंततः उस बिंदु पर पहुंच जाएंगे जहां आपके पास कार्यकर्ता को कार्य के भीतर कार्य करने के लिए कोई कर्मचारी नहीं है, और आप जमा हो जाएंगे। (2) यदि आप अनुरोधों का उपयोग कर रहे हैं, तो बहुत सारे डाउनलोड या जो भी हो, उसके पास डिफ़ॉल्ट टाइमआउट नहीं है, इसलिए यदि आपके पास डाउनलोड त्रुटि है तो यह पूरी तरह से जमा हो सकता है। एक बार एक कर्मचारी फ्रीज हो जाता है, यह हो गया है। – mlissner