2011-12-16 5 views
8

से पुन: प्राप्त करना अजवाइन मैं Celeryd/RabbitMQ एक फेडोरा बॉक्स पर चल रहा है, एक अलग बॉक्स पर एक MySQL डेटाबेस के साथ संवाद स्थापित किया है। मैंने देखा है कि, दुर्लभ अवसरों पर, अगर भी है वहाँ MySQL डेटाबेस (यहां तक ​​कि कुछ सेकंड के लिए) से कनेक्ट कर थोड़ी सी भी समस्या, celeryd त्रुटि के साथ दुर्घटना होगा:एक डाटाबेस आउटेज

OperationalError: (2003, "Can't connect to MySQL server on 
'mydatabasedomain' (111)") 

और यहां तक ​​कि फिर से कनेक्ट करने में विफल जब डेटाबेस फिर से उपलब्ध हो जाता है।

वर्तमान में, मैं मैन्युअल celeryd सेवा को पुनः आरंभ करने अजवाइन दोबारा शुरू करने के लिए मजबूर कर रहा हूँ। क्या इस प्रकार की घटना से ठीक होने के लिए एक और अधिक सुंदर और स्वचालित तरीका है? क्या पर सेलेरीड की कोई सुविधा है चुपचाप प्रतीक्षा करें, ऑपरेशनल एरर लॉगिंग करें, और को पूरी तरह से बाहर निकलने के बजाय पुनः कनेक्ट करें?

+1

MySQL का उपयोग क्या कर रहा है? क्या आप एसक्यूएलकेमी ब्रोकर का उपयोग कर रहे हैं, जो MySQL डीबी से कनेक्ट हो रहा है? – brechin

उत्तर

0

मुझे कॉन्फ़िगरेशन ध्वज का उपयोग करके इसे ठीक करने के किसी भी तरीके से नहीं पता है, लेकिन आप पर्यवेक्षक (एस http://supervisord.org) का उपयोग करके अपने कार्यकर्ता को चलाने पर विचार कर सकते हैं।

यह भी अजवाइन डॉक्स (http://celery.readthedocs.org/en/latest/tutorials/daemonizing.html#supervisord) कुछ उदाहरण config फ़ाइलों का एक लिंक सहित में बताया गया है।

+0

यहां एक ही समस्या है। अजवाइन एक समाधान प्रदान नहीं करता है? एक बाहरी डिमन एकमात्र ज्ञात विकल्प है? मेरे मामले में मेरे पास पाइथन ऐप + सेलेरी + रैबिटएमक्यू चलाने वाले दो बक्से हैं, जो एसक्यूएलकेमी का उपयोग कर उसी Google क्लाउड एसक्यूएल डेटाबेस से कनेक्ट हैं। आखिर में मैं मशीनों में से एक में एक एसक्यूएल ऑपरेशनल एरर '(2013, 'क्वेरी के दौरान MySQL सर्वर से खोया कनेक्शन') प्राप्त करता हूं। अपवाद को संभालने के बावजूद, सेलेरी लॉगिंग के बिना, दोनों मशीनों में सेलेरी कार्यकर्ता प्रक्रियाएं बंद हो जाती हैं। केवल RabbitMQ अचानक बंद होने वाले कनेक्शन लॉग करता है – alecdotico

+0

मुझे लगता है कि यह एक अलग मुद्दा है (हालांकि दोनों को एक और मजबूत अजवाइन से संभाला जाना चाहिए)। आपके द्वारा उद्धृत त्रुटि संदेश तब होता है जब एक डीबी कनेक्शन बहुत लंबे समय तक खुला रहता है (आप अपने mysql कॉन्फ़िगरेशन में टाइमआउट को बढ़ाकर इसे ठीक करने में सक्षम हो सकते हैं) – Jann

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