2015-12-28 14 views
9

से हटा दिए गए हैं, मैं Django 1.6, RabbitMQ 3.5.6, celery 3.1.19 का उपयोग कर रहा हूं।ईटी के साथ सेलेरी कार्य खरगोश एमक्यू

एक आवधिक कार्य है जो हर 30 सेकंड चलाता है और दिए गए eta पैरामीटर के साथ 200 कार्य बनाता है। अजवाइन कार्यकर्ता चलाने के बाद, धीरे-धीरे कतार खरगोश एमक्यू में बनाई जाती है और मुझे लगभग 1200 अनुसूचित कार्यों को निकाल दिया जाने का इंतजार है। फिर, मैं अजवाइन कार्यकर्ता को पुनरारंभ करता हूं और सभी प्रतीक्षा 1200 निर्धारित कार्यों को RabbitMQ से निकाल दिया जाता है।

मैं कैसे कार्य बनाने: python manage.py celery worker -Q my_tasks_1 -A my_app -l

CELERY_ACKS_LATE Django सेटिंग्स में True पर सेट है: my_task.apply_async((arg1, arg2), eta=my_object.time_in_future)

मैं इस तरह कार्यकर्ता चलाते हैं। मुझे कोई संभावित कारण नहीं मिला।

क्या मुझे कार्यकर्ता को एक अलग कॉन्फ़िगरेशन/ध्वज/पैरामीटर के साथ चलाया जाना चाहिए? कोई उपाय?

+0

1) क्या आप वाकई केवल कार्यकर्ता को पूरे खरगोश सर्वर को पुनरारंभ नहीं करते हैं? 2) हो सकता है कि आप कुछ कार्य 'ttl' समय निर्धारित करें और यह इस समय के बाद बस हटा दिया जाता है? – matino

+0

1) मुझे यकीन है कि केवल श्रमिकों को पुनरारंभ किया जाएगा। 2) किसी भी विन्यास में कार्य करने के लिए कोई ttl सेट नहीं है। यह डिफ़ॉल्ट है। लेकिन अगर मैं श्रमिकों को खुला रखता हूं, तो कार्य कतार में रहता है। –

+0

क्या आप डीबग लॉग साझा कर सकते हैं? –

उत्तर

1

जहां तक ​​मुझे पता है कि सेलेरी खरगोश एमक्यू की निर्धारित पंक्तियों पर भरोसा नहीं करती है। यह आंतरिक रूप से ईटीए/उलटी गिनती लागू करता है।
ऐसा लगता है कि आपके पास पर्याप्त कर्मचारी हैं जो पर्याप्त संदेश लाने और उन्हें आंतरिक रूप से शेड्यूल करने में सक्षम हैं।
ध्यान दें कि आपको 200 श्रमिकों की आवश्यकता नहीं है। आपके पास प्रीफ़ेच गुणक डिफ़ॉल्ट मान पर सेट है ताकि आपको कम आवश्यकता हो।

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