मेरे पास एक मॉड्यूल में एक रिकोन कनेक्टिंग क्लाइंटफैक्टरी है। मैं मॉड्यूल को जितना संभव हो उतना लचीला होना चाहता हूं। मुझे केवल एक ही टीसीपी कनेक्शन की आवश्यकता है। मैं फैक्ट्री का उपयोग इस कनेक्शन के लिए एक सतत इंटरफ़ेस के रूप में करता हूं। अतीत में कारखाना अंतहीन रूप से कनेक्शन को पुनः प्रयास करके डिस्कनेक्शन का जवाब देगा, कभी भी शीर्ष स्तर की स्क्रिप्ट (मॉड्यूल आयात करने वाली स्क्रिप्ट) को सूचित नहीं करेगा कि कनेक्शन समस्याएं थीं।डिस्कनेक्ट को संभालने के लिए मैं एक मुड़ कारखाने को कैसे डिजाइन करूं?
Factory(protocol.ReconnectingClientFactory):
def clientConnectionFailed(self, connector, reason):
...
def clientConnectionLost(self, connector, reason):
...
मुझे लगता है कि अगर मैं शीर्ष स्तर स्क्रिप्ट (स्क्रिप्ट कि मॉड्यूल का आयात करता है) को सूचित यह सबसे अच्छा है जब वहाँ कनेक्शन समस्याओं कर रहे हैं:
यहाँ मैं क्या है की एक संक्षिप्त उदाहरण है। इस प्रकार शीर्ष स्तरीय स्क्रिप्ट मॉड्यूल में हार्ड कोड किए जाने के बजाय डिस्कनेक्ट रिज़ॉल्यूशन व्यवहार को परिभाषित कर सकती है। लेकिन शीर्ष स्तर की स्क्रिप्ट में कनेक्शन समस्याओं को संवाद करने का सबसे अच्छा तरीका क्या है?
मैं अपवाद उठा सकता हूं, लेकिन इसे पकड़ा जाएगा? मुझे लगता है कि रिएक्टर इसे पकड़ लेगा, लेकिन यह कैसे मदद करता है?
कनेक्शन समस्या की शीर्ष स्क्रिप्ट को सूचित करने के लिए कोई कॉलबैक या त्रुटियां नहीं हैं जिन्हें मैं आग लगा सकता हूं।
शीर्ष स्क्रिप्ट कनेक्शन समस्याओं के दौरान विशिष्ट कार्यों [तर्क के रूप में] कहलाया जा सकता है। हालांकि यह अच्छा डिजाइन है?
यह एक अपूर्ण समाधान प्रतीत होता है, क्योंकि यह केवल असफल कनेक्शन प्रयासों को संभालने का तरीका देता है, कनेक्शन खो नहीं जाता है। प्रोटोकॉल से सहयोग के बिना आप खोए गए कनेक्शन कैसे प्रबंधित करते हैं? –