आपको क्या करना होगा सेट करने के लिए
CELERY_ACKS_LATE = सच
देर पावती मतलब यह है कि कार्य संदेशों के बाद कार्य, नहीं बस से पहले मार डाला गया है, जो डिफ़ॉल्ट व्यवहार है स्वीकार किया जाएगा। इस तरह यदि कर्मचारी खरगोश दुर्घटनाग्रस्त हो जाता है तो एमक्यू के पास अभी भी संदेश होगा।
जाहिर है कि कुल दुर्घटना (खरगोश + श्रमिक) एक ही समय में कार्य को पुनर्प्राप्त करने का कोई तरीका नहीं है, सिवाय इसके कि यदि आप कार्य शुरू करने और कार्य अंत में लॉगिंग लागू करते हैं। व्यक्तिगत रूप से मैं एक कार्य शुरू होने पर हर बार एक मोंगोडब में लिखता हूं और जब कोई कार्य खत्म होता है (स्वतंत्र रूप से परिणाम बनाते हैं), इस तरह से मैं जान सकता हूं कि मोंगो लॉग का विश्लेषण करके कौन सा कार्य बाधित था।
आप सेलरी बेस टास्क क्लास के __call__
और after_return
विधियों को ओवरराइड करके आसानी से कर सकते हैं।
आपके कोड का एक टुकड़ा देखने के बाद जो कार्य प्रबंधक (प्रवेश और निकास बिंदु के साथ) के रूप में कार्य लॉगर वर्ग का उपयोग करता है। टास्कलॉगर क्लास बस एक लाइन लिखता है जिसमें एक मोंगोडब उदाहरण में कार्य जानकारी होती है।
def __call__(self, *args, **kwargs):
"""In celery task this function call the run method, here you can
set some environment variable before the run of the task"""
#Inizialize context managers
self.taskLogger = TaskLogger(args, kwargs)
self.taskLogger.__enter__()
return self.run(*args, **kwargs)
def after_return(self, status, retval, task_id, args, kwargs, einfo):
#exit point for context managers
self.taskLogger.__exit__(status, retval, task_id, args, kwargs, einfo)
मुझे आशा है कि इस
मदद कर सकता है
स्रोत
2011-03-17 13:18:37