मैं Django + Celery + RabbitMQ चला रहा हूं। कुछ कार्य नामों को संशोधित करने के बाद मुझे "अनरजिस्टर्ड टास्क" KeyErrors मिलना शुरू हुआ, यहां तक कि Django Celery Beat में आवर्त सारणी तालिका से इस कुंजी के साथ कार्यों को हटाने और Celery कार्यकर्ता को पुनरारंभ करने के बाद भी। वे दृढ़ रहना के बाद भी --purge विकल्प के साथ चल रहा है.
मैं उनसे पीछा कैसे छुड़ाऊं?
उत्तर:
जवाब के लिए 0 № 1इन कार्यों में से अंतिम को निकालने के लिए, आप उन्हें अपने पुराने तरीके के हेडर के साथ फिर से लागू कर सकते हैं, लेकिन कोई तर्क नहीं।
उदाहरण के लिए, यदि आपने विधि को हटा दिया है original
और अब त्रुटि हो रही है
[ERROR/MainProcess] Received unregistered task of type u"myapp.tasks.original"
बस फिर से बनाना original
निम्नानुसार विधि:
tasks.py
@shared_task
def original():
# keep legacy task header so that it is flushed out of queue
# FIXME: this will be removed in the next release
pass
एक बार जब आप प्रत्येक वातावरण में इस संस्करण को चला लेते हैं, तो किसी भी शेष कार्य को संसाधित किया जाएगा (और कुछ नहीं)। सुनिश्चित करें कि आपने उन्हें अपने से दूर कर दिया है आवधिक कार्य तालिका, और यह कि उन्हें अब आमंत्रित नहीं किया जा रहा है। फिर आप अपनी अगली परिनियोजन से पहले विधि को निकाल सकते हैं, और समस्या को फिर से नहीं करना चाहिए।
यह अभी भी एक समाधान है, और यह करने में सक्षम होना बेहतर होगा व्यक्तिगत रूप से कार्यों की समीक्षा करें और हटाएं.