2012-02-28 17 views
13

मैं सोच रहा था कि वेबजेट्स के साथ एक django webservice (XML के साथ प्रतिक्रिया) कैसे बनाएं। मेरे पास पहले से ही एक django webservice है जो xml अनुरोध स्वीकार करता है, उन अनुरोधों को पार्स करता है, डेटाबेस क्वेरी बनाता है, प्रतिक्रिया xml बनाता है और उस XML को अनुरोधकर्ता/ब्राउज़र पर वापस भेजता है। बस एक सामान्य HTTP एक्सएमएल अनुरोध, जहां प्रतिक्रिया ब्राउज़र के भीतर एक्सएमएल के रूप में दिखाया गया है।वेबसॉकेट + डीजेगो पायथन वेब सेवा

लेकिन अब मैं एक websocket django webservice कैसे बनाऊंगा? आइए कहें कि जब भी कोई नया जादुई घटना होती है तो मैं डेटाबेस से नवीनतम डेटा के साथ अनुरोधकर्ता/ब्राउज़र को एक एक्सएमएल प्रतिक्रिया भेजना चाहता हूं।

मैंने बहुत सी पोस्ट और ब्लॉग पढ़े हैं लेकिन यह बहुत सामान्य था। क्या मैं इसे केवल django + apache के साथ हल कर सकता हूं या क्या मुझे वेबजेट्स को संभालने के लिए django और अन्य सर्वर के बगल में कुछ और चाहिए?

मैं अभी django 1.3, अपाचे + wsgi का उपयोग कर रहा हूं लेकिन मैं काम करने वाले किसी भी कॉन्फ़िगरेशन को स्विच करने के लिए तैयार हूं।

अद्यतन:

वहाँ कई संभव WebSockets सारे हैं, http://pypi.python.org/pypi?:action=search&term=websocket&submit=search लेकिन जो एक मेरे मामले में इस्तेमाल किया जा सकता है?

उत्तर

8

क्षमा करें, लेकिन django async अनुरोधों को बहुत ही खराब तरीके से संभालता है क्योंकि यह wsgi है। यदि आपको वास्तविक उपयोगकर्ताओं को संभालना है तो आप अपने समानांतर उदाहरण से सीमित रहेंगे। सबसे अच्छा समाधान टर्ननाडो या नोड.जेएस का उपयोग करना है।

टोरनाडो वेबसाइकिल और लंबे मतदान को शानदार ढंग से संभालता है। यहाँ एक समानांतर बवंडर धागे से उपयोगकर्ता और सत्र हो रही अनुमति देने के लिए मेरी आवरण है:

https://gist.github.com/1939836

यह एक अधिक जटिल स्रोत से अनुकूलित है, मैं इस सार का परीक्षण नहीं किया था, यह लंबे समय से मतदान है, लेकिन बवंडर handlse WebSocket रूप में अच्छी तरह ।

http://www.tornadoweb.org/documentation/websocket.html

अद्यतन: उत्पादन में इस्तेमाल के लिए

बचें Django-WebSocket। यहां तक ​​कि मुख्य डेवलपर इसके खिलाफ सिफारिश करता है।

मैं टोरनाडो की सलाह देता हूं क्योंकि यह एक अद्भुत तकनीक है जो डीजेंगो की तुलना में तेजी से तेज/हल्की है। यह कुछ साधारण मामलों के लिए उपयोगी हो सकता है। आपको apache/nginx को किसी भी तरह कॉन्फ़िगर करने की आवश्यकता होगी, कम से कम "तेज़ वेब पेज" सुविधा उपलब्ध हो।

Django-डेस्कटॉप-अधिसूचना क्रोम ब्राउज़र पर केंद्रित है और node.js. की आवश्यकता है

अद्यतन (01/2016):

मोज़िला इस विशेष मुद्दे को हल करने के लिए 2015 के अंत तक django के लिए पैसे दिए, मौजूदा सबसे promizing एक Django कोर देव द्वारा किए गए कार्यान्वयन इस एक है:

https://github.com/andrewgodwin/channels

यह शायद Django 1.11 या 2.0

+0

thx। मुझे किसी भी कीमत ** मतदान ** से बचना है। क्लाइंट को नए अपडेट के लिए सर्वर से नहीं पूछना चाहिए। मैं अपनी पहली पोस्ट को "संभावित मौजूदा कार्यान्वयन" की सूची के साथ अपडेट कर दूंगा लेकिन मुझे यकीन नहीं है कि उनमें से कौन सा मेरे मामले के लिए उपयोग किया जा सकता है। – Gero

+0

लंबे मतदान वास्तविक रीयलटाइम है, आवश्यकता होने पर आप केवल उत्तर भेजते हैं। लेकिन आपके पास टॉरनाडो एसिंक सर्वर और डीजेंगो के बीच संचार करने की आवश्यकता है। यदि आप django orm का उपयोग करते हैं तो टर्ननाडो से डीबी एक्सेस से बचें, यह कॉल अवरुद्ध करने से बना है। – christophe31

+0

मैंने लंबे मतदान के लिए आरएफसी पढ़ा है, लेकिन मुझे वेबसाकेट्स के साथ जाना होगा। कई कार्यान्वयनों में से एक की आवश्यकता है, जो django – Gero

0

हाँ का हिस्सा होगा, Django नहीं कि सभी महान जब यह अतुल्यकालिक सामान की बात आती है।आपके लिए मेरी सलाह मोड़ का उपयोग करना होगा क्योंकि इसमें बहुत सारे वेबस्केट पुस्तकालय हैं। यदि आपको वास्तव में django का उपयोग करने की आवश्यकता है ... आप django कार्य को एक गुजरने के रूप में बना सकते हैं, सभी एपीआई सामान जो आप मोड़ का उपयोग कर बनाते हैं।

7

हालांकि यह सेटअप करने के लिए थोड़ा जटिल है (लेकिन शायद जाने का तरीका), आप gunicorn + gevent + socket.io का उपयोग कर सकते हैं।

मैंने this article का उपयोग किया ताकि मैं इसके माध्यम से अपना रास्ता तलाश सकूं।

आप सर्वर भेजे गए ईवेंट भी देख सकते हैं (ऊपर वर्णित आलेख भी उस पर दिखता है)। यदि वे आपकी ज़रूरतों को पूरा करते हैं, तो यह सेट करना थोड़ा आसान होगा - क्योंकि आपको सॉकेट.ओओ सेट अप करने की आवश्यकता नहीं है और आपको क्लाइंट लाइब्रेरी की आवश्यकता नहीं है। हालांकि एक पकड़ - एसईई आईई में समर्थित नहीं हैं। आपके उत्तर के लिए

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