2009-05-11 14 views
6

कई पाइथन पुस्तकालय, हाल ही में लिखे गए, नेटवर्किंग कार्यों को करने के लिए httplib2 या सॉकेट इंटरफ़ेस का उपयोग करते हैं।एक httplib2/सॉकेट प्रतिस्थापन मुड़ गया है?

जो उनके अवरुद्ध प्रकृति के कारण ट्विस्ट की तुलना में कोड पर स्पष्ट रूप से आसान हैं, लेकिन मुझे लगता है कि यह अन्य कोड, विशेष रूप से जीयूआई के साथ एकीकृत करते समय यह एक कमी है। यदि आप मल्टीथ्रेडिंग से परहेज करते समय स्केलेबिलिटी, कॉन्सुरेंसी या जीयूआई एकीकरण चाहते हैं, तो ट्विस्टेड एक प्राकृतिक विकल्प है।

तो मैं उन मामलों में राय में रुचि होगी:

  1. नई नेटवर्किंग कोड (छोटे कमांड लाइन उपकरण को छोड़कर) मुड़ के साथ लिखा जाना चाहिए?
  2. क्या आप एक ही प्रोजेक्ट में ट्विस्ट, http2lib या सॉकेट कोड मिश्रण करेंगे?
  3. अधिकांश पुस्तकालयों के लिए ट्विस्ट पायथनिक है (यह विकल्पों की तुलना में अधिक जटिल है, एक गैर-मानक पैकेज पर निर्भरता पेश करता है ...)?

संपादित करें: कृपया मुझे इसे किसी अन्य तरीके से वाक्यांश दें। क्या आपको लगता है कि ट्विस्टेड के साथ नया लाइब्रेरी कोड लिखना अपने गोद लेने में बाधा डाल सकता है? मुड़ते हुए स्पष्ट फायदे हैं (विशेष रूप से पोर्टेबिलिटी और स्केलेबिलिटी जैसा कि गिमेल द्वारा बताया गया है), लेकिन तथ्य यह है कि यह कोर पायथन लाइब्रेरी नहीं है, कुछ लोगों को दोष के रूप में माना जा सकता है।

उत्तर

0
  1. नई नेटवर्किंग कोड (छोटे कमांड लाइन उपकरण को छोड़कर) मुड़ के साथ लिखा जाना चाहिए?
    • शायद। यह वास्तव में निर्भर करता है। कभी-कभी अवरुद्ध कॉल को अपने स्वयं के धागे में लपेटने के लिए पर्याप्त आसान होता है। बड़े पैमाने पर नेटवर्क कोड के लिए मुड़ना अच्छा है।
  2. क्या आप एक ही प्रोजेक्ट में ट्विस्ट, http2lib या सॉकेट कोड मिश्रण करेंगे?
    • निश्चित रूप से। लेकिन बस याद रखें कि ट्विस्टेड सिंगल थ्रेडेड है, और ट्विस्टेड में कोई अवरुद्ध कॉल पूरे इंजन को अवरुद्ध कर देगा।
  3. अधिकांश पुस्तकालयों के लिए ट्विस्ट पायथनिक है (यह विकल्पों की तुलना में अधिक जटिल है, एक गैर-मानक पैकेज पर निर्भरता पेश करता है ...)?
    • कई ट्विस्टेड उत्साह हैं जो कहेंगे कि यह पायथन मानक पुस्तकालय में है।लेकिन कई लोग एसिंककोर/एसिंचैट के साथ सभ्य नेटवर्किंग कोड को कार्यान्वित कर सकते हैं।
+8

-1। प्वाइंट 1: किसी भी प्रकार के नेटवर्क कोड के लिए मुड़ना बहुत अच्छा है, आपका प्रतिबंध लागू नहीं होता है। थ्रेडेड-लिपटे कोड में सबसे खराब प्रदर्शन होता है और इसे सही और डीबग करना मुश्किल होता है। प्वाइंट 2: नहीं। अगर मेरे पास मेरे निपटान पर पूर्ण मुड़ता हुआ ढेर है तो मैं http2lib या सॉकेट का उपयोग क्यों करूं? पोंट 3: Asyncore/asynchat, गंभीरता से? :( – nosklo

+3

@ नोस्क्लो: प्वाइंट 1: आप किस तरह के ट्विस्टेड ज़ीलॉट के बारे में बात कर रहे हैं। इस बात का कोई बहस नहीं है कि मुड़ना अधिक जटिल है। अगर आप इंटरथ्रेड संचार के लिए कतार का उपयोग करते हैं तो थ्रेड-लिपटे कोड सही हो सकता है, मैं अत्यधिक संदेह है कि प्रदर्शन अधिकांश अनुप्रयोगों के लिए मायने रखता है। प्वाइंट 2: क्या आप वेब सर्वर बनाने की सोच रहे हैं? मुझे नहीं लगता। प्वाइंट 3: असिनकोर/असिनचैट गंभीरता से ... बिंदु 1. – Unknown

+1

दोस्तों, वाईएमएमवी, विशेष रूप से आपके अनुभव के आधार पर एक टूलकिट या दूसरा। मुझे डर है कि मेरा मूल प्रश्न बहुत ही व्यक्तिपरक था। मैं ट्विस्ट की कथित कठिनाई से इतना चिंतित नहीं हूं (यह सीखने में मेरी समस्या है, और मुझे लगता है कि यह दस्तावेज तैयार किया गया है ताकि संभावित रखरखाव इस कोड की वजह से खोया नहीं जाएगा) इस तथ्य के मुकाबले कि यह अन्य कोडर्स को इसकी स्वीकार्यता सीमित कर सकता है। – oparisy

5

asychronous-programming-in-python-twisted देखें, आपको यह तय करना होगा कि गैर-मानक (बाहरी) लाइब्रेरी के आधार पर आपकी आवश्यकताओं के अनुरूप है या नहीं। @Glyph द्वारा उत्तर दें, वह Twisted प्रोजेक्ट के संस्थापक हैं, और अधिकृत रूप से Twisted संबंधित प्रश्न का उत्तर दे सकते हैं।

मुड़, मुख्य पाश सो नहीं है में समारोह की तरह पुस्तकालयों के मूल में है, लेकिन चयन करें() या पोल (जैसे एक ऑपरेटिंग सिस्टम कॉल), के रूप में अजगर का चयन मॉड्यूल की तरह एक मॉड्यूल द्वारा उजागर। मैं "पसंद" चुनता हूं, क्योंकि यह एक एपीआई है जो प्लेटफार्मों के बीच बहुत भिन्न होता है, और लगभग हर जीयूआई टूलकिट का अपना संस्करण होता है। ट्विस्ट वर्तमान में इस विषय पर 14 विभिन्न भिन्नताओं के लिए एक अमूर्त इंटरफ़ेस प्रदान करता है। आम बात यह है कि ऐसा एपीआई प्रदान करता है, यह कहने का एक तरीका प्रदान करता है कि "यहां उन घटनाओं की एक सूची दी गई है जिनकी मैं प्रतीक्षा कर रहा हूं। उनमें से एक तब तक सो जाओ, तब उठो और मुझे बताओ कि उनमें से कौन सा था। "

+0

आपका जवाब (कुछ) मुड़ विस्तृत है, लेकिन मैं पहले से ही पता है। मुझे यहां क्या दिलचस्पी है यह है कि अन्य डेवलपर इसे कैसे समझ सकते हैं, और यदि कुछ मेरी लाइब्रेरी का उपयोग नहीं करना चुन सकते हैं क्योंकि यह गैर-कोर लाइब्रेरी पर निर्भर करता है। आप जानते हैं, वैसे ही उनमें से कुछ लाइसेंस संगतता कारणों के लिए अपने स्रोत में जीपीएल कोड को एकीकृत नहीं करेंगे। – oparisy

+1

अतिरिक्त निर्भरताओं को हमेशा देखभाल के साथ माना जाना चाहिए। मैं अपने सीमित अनुभव, ट्विस्ट पायथन संस्करणों को पकड़ने में थोड़ा धीमा है, लेकिन काफी ठोस है। – gimel

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