2009-09-02 16 views
6

मैं कई प्रकार के स्पाइडरिंग प्रोग्राम में ट्विस्टेड का उपयोग करने की कोशिश कर रहा हूं जो एकाधिक क्लाइंट कनेक्शन प्रबंधित करता है। मैं एक समय में काम कर रहे लगभग 5 ग्राहकों के पूल को बनाए रखना चाहता हूं। प्रत्येक क्लाइंट की कार्यक्षमता एक निर्दिष्ट आईआरसी सर्वर से कनेक्ट करने के लिए है जो इसे किसी सूची से प्राप्त करती है, एक विशिष्ट चैनल दर्ज करें, और तब उस चैनल में उपयोगकर्ताओं की सूची को डेटाबेस में सहेजें।एकाधिक ट्विस्ट क्लाइंट कनेक्शन प्रबंधित करना

मेरी समस्या जो कुछ भी हो रही है उससे कहीं अधिक वास्तुकला है। मैं मुड़ने के लिए बिल्कुल नया हूं और मुझे नहीं पता कि कई ग्राहकों के प्रबंधन के लिए कौन से विकल्प उपलब्ध हैं। मुझे लगता है कि प्रत्येक क्लाइंट क्रिएटर इंस्टेंस को अपना काम पूरा करने के बाद बस एक आसान तरीका है और एक केंद्रीय लूप है जो यह देखने के लिए जांच सकता है कि नया क्लाइंट जोड़ने के लिए कोई जगह है या नहीं। मुझे लगता है कि यह एक विशेष रूप से असामान्य समस्या नहीं है इसलिए मैं अन्य लोगों के अनुभवों से कुछ जानकारी प्राप्त करने की उम्मीद कर रहा हूं।

उत्तर

4

सबसे अच्छा विकल्प वास्तव में यहां स्पष्ट चीज़ करने के लिए है। लूप, या दोहराना समय कॉल नहीं है; बस हैंडलर जो सही काम करते हैं।

केंद्रीय कनेक्शन-प्रबंधन ऑब्जेक्ट को चारों ओर रखें, और ईवेंट-हैंडलिंग विधियों को उस जानकारी को फ़ीड करें जो इसे जारी रखने के लिए आवश्यक है। जब यह शुरू होता है, तो 5 आउटगोइंग कनेक्शन बनाएं। प्रगति में कितने हैं, इसका ट्रैक रखें, इसमें उनके साथ एक सूची बनाए रखें। जब कोई कनेक्शन सफल होता है (connectionMade में) कनेक्शन के नए राज्य को याद रखने के लिए सूची अपडेट करें। जब कोई कनेक्शन पूरा हो जाता है (connectionLost में) कनेक्शन प्रबंधक को बताएं; इसकी प्रतिक्रिया उस कनेक्शन को हटाने और कहीं और नया कनेक्शन बनाना चाहिए। बीच में, यह स्पष्ट रूप से स्पष्ट होना चाहिए कि आपको आवश्यक नामों के लिए अनुरोध को कैसे बंद करना है और उन्हें डेटाबेस में भरना है (Deferred आने के लिए, आपके आईआरसी कनेक्शन को छोड़ने से पहले डेटाबेस सम्मिलन को पूरा करने के लिए प्रतीक्षा करना से वापस)।

3

के बाद से अपने ग्राहकों में से प्रत्येक के एक डेटाबेस को अद्यतन करने की जरूरत है, सहज मुझे लगता है मैं connection pool बंद पिगीबैक चाहते हैं - अधिक के लिए here देखना (पूरे दस्तावेज़ कुछ महत्वपूर्ण डिजाइन पैटर्न है कि अक्सर उभरने जब मुड़ उपयोग करने के लिए सिफारिश की है)।

-1

मुझे नहीं पता कि आपको ट्विस्ट का उपयोग करने के लिए मजबूर किया गया है, अन्यथा आप Gevent को आज़मा सकते हैं।

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