2012-02-14 15 views
10

मेरे पास एक Django प्रबंधन कमांड है जो हजारों टीसीपी/यूडीपी अनुरोध करता है। मैंने इसे गति देने के लिए गेवेन्ट का उपयोग किया है क्योंकि मैंने कोर कोड के रूप में काम करने के लिए अपना कोड पुनर्गठित किया है। सॉकेट कनेक्शन अब ब्लॉक नहीं करते हैं, लेकिन जो मैंने पढ़ा है, उससे भी Django के कुछ हिस्सों में हरा नहीं है। (हरे रंग से, मेरा मतलब है कि हरे रंग का उपयोग करना।)Django को हरा

क्या आप मुझे बता सकते हैं कि Django के कौन से हिस्से हरे रंग के नहीं हैं और मैं उन्हें हरा बनाने के लिए क्या कर सकता हूं? कुछ डीबी संबंधित हिस्सों हैं जो अभी भी मुझे लगता है कि ब्लॉक। क्या Django के लिए कोई पुस्तकालय/पैच है जो मुझे इसे हरा बनाने में मदद करता है?

मैं अनुरोध/प्रतिक्रिया चक्र के बारे में बहुत चिंतित नहीं हूं, इसलिए ग्रीनिकॉर्न मेरी मदद करेगा?

धन्यवाद

उत्तर

10

gevent बंदर patcher मानक पुस्तकालय पैच जाएगा अनुकूल Greenlet किया जाना है। इसमें बहुत आम Django कॉल लेना चाहिए।

from gevent import monkey; monkey.patch_all() 

डेटाबेस तक, आमतौर पर इंटरफेस अवरुद्ध हो रहे हैं। यदि आप पोस्टग्रेएसक्यूएल का उपयोग psyco_gevent में बंदर पैच psycopg2 में gevent के साथ सहयोग करने के लिए करते हैं।

2

गीवेंट तीसरे पक्ष के पुस्तकालयों को तब तक नहीं बनाएगा जब तक सी एक्सटेंशन का उपयोग नहीं कर रहे हों या सी एक्सटेंशन का उपयोग कर रहे अन्य तृतीय-पक्ष पुस्तकालयों का उपयोग कर रहे हों। यदि मानक पुस्तकालयों का उपयोग किया जाता है तो गीवेंट बंदर को बंद करने में सक्षम होता है।

कुछ डेटाबेस ड्राइवर डेटाबेस कार्यान्वयन पर ही निर्भर हैं। सिर्फ इसलिए कि आप एक हरे रंग की लाइब्रेरी का उपयोग करते हैं, इसका मतलब यह नहीं है कि डेटाबेस "हरा" व्यवहार करेगा। इसे डेटाबेस स्तर पर भी लागू करने की आवश्यकता है। उदाहरण के लिए Prosgresql संस्करण 2.2 के बाद से async कमांड प्रसंस्करण का समर्थन करता है।

इसके अलावा आप Projects using gevent देख सकते हैं।

गनिकॉर्न आपके लिए जीवन को आसान बना देगा, कम से कम जब आप अपना आवेदन तैनात करना शुरू करेंगे। इसके अलावा विकास के दौरान मैं सामान्य django रनरवर कमांड पर गनिकोर्न (गीवेंट के साथ) की सिफारिश करता हूं, क्योंकि यह एक साथ अनुरोधों को तेजी से संभाल सकता है।

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