2012-06-07 17 views
23

मुझे django में एक पुश सिस्टम बनाने की आवश्यकता है, मूल रूप से इसका कार्य सर्वर से ब्राउज़र पर संदेशों को धक्का देना है।django में पुश सिस्टम कैसे बनाएं?

चूंकि नोडज का उपयोग नहीं किया जा सकता है, इसलिए मैं वेबसाइकिल या कक्षा में पसंद करता हूं, लेकिन मुझे नहीं पता कि इन दोनों में से किसी को डीजेंगो में कैसे कार्यान्वित किया जाए। कृपया मेरे लिए एक विधि की सिफारिश करें, इससे मुझे बहुत मदद मिलेगी, thx।

उत्तर

11

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

+0

मेरी पूरी साइट django और Nginx पर आधारित है, तो मुझे लगता है कि यह टॉरनाडो या मुड़ने का अधिकार उपयोग करने का एक प्रभावी तरीका नहीं है? – Stan666

+0

क्यों कुशल नहीं है? क्या यह आपके हार्डवेयर पर निर्भर करता है?कम प्रयास के साथ आप एक समानांतर टर्ननाडो प्रक्रिया कर सकते हैं जो कुछ websockets को संभालती है .. – hymloth

+0

क्षमा करें मैं टर्ननाडो से काफी परिचित नहीं हूं, क्या आपका मतलब डोरंगो के समानांतर एक टर्ननाडो सर्वर है? मेरा पहला विचार यह था कि यह django के अंदर ऐसा करना था, क्योंकि वहां django-websocket है जो बहुत खराब नहीं है। – Stan666

13

एक विकल्प आपके वेबोज़ सर्वर के समानांतर चलने वाले वेबसॉकेट सर्वर का उपयोग करना होगा जिसमें एक आरईएसटी/पुश एपीआई है, और फिर वेबसेट सर्वर पर HTTP/POSTING द्वारा Django से धक्का दें, जो बदले में संदेशों को वितरित करता है सभी जुड़े वेबसाकेट क्लाइंट।

इस तरह, आपको अपने मौजूदा Django ऐप में किसी भी संरचनात्मक/तकनीकी परिवर्तन की आवश्यकता नहीं है, फिर भी एक स्केलेबल, आधुनिक वेबसाकेट आधारित पुश सुविधा है।

ऊपर प्रदान की गई एक होस्टेड सेवा के लिए, मुझे http://pusher.com पर एक नज़र डालेंगी।

यदि आप अपना खुद का चलाना पसंद करते हैं, तो मुझे http://autobahn.ws पर एक नज़र डालेंगी, जिसे एक पूर्ण-संचालित वर्चुअल उपकरण (वीएमवेयर, वर्चुअलबॉक्स, अमेज़ॅन ईसी 2) के रूप में तैनात किया गया है। आप आराम/एपीआई यहाँ https://github.com/tavendo/AutobahnPushPython

अस्वीकरण का कार्य करने वाले उदाहरणों पा सकते हैं: मैं ऑटोबान ओपन-सोर्स के लेखक हूँ, और Tavendo, जो Autobahn.ws (वाणिज्यिक भेंट ऑटोबान ओएसएस के आधार पर) प्रदान करता है के लिए काम करते हैं।

+0

मैं AutobahnPushPython, thx पर कोशिश करूंगा :) – Stan666

5

जैसा कि @ हिमलोथ सुझाव देता है, टॉरनाडो या नोड.जे.एस. का उपयोग करने का एक बेहतर तरीका है।

लेकिन, यदि आपको Django का उपयोग करना है, तो मैंने वेबसॉकेट को कार्यान्वित करने के बारे में एक लेख लिखा है जिसके साथ आपको उपयोगी मिल सकता है।

http://curella.org/blog/2012/jul/17/django-push-using-server-sent-events-and-websocket/

6

एक Django मॉड्यूल है, जो Redis संदेश कतार के रूप में उपयोग करते हुए बॉक्स से बाहर WebSockets का समर्थन करता है नहीं है। यहां एक नज़र डालें: https://github.com/jrief/django-websocket-redis

अस्वीकरण: मैं उस पुस्तकालय का लेखक हूं।

+0

क्या आप एक न्यूनतम उदाहरण की सिफारिश कर सकते हैं? –

+0

@RubberDuck ... भंडार डेमो की जांच करें। यह बहुत अच्छा है। आप अपनी स्थापना की जांच कर सकते हैं: http://django-websocket-redis.readthedocs.org/en/latest/installation.html#check-your-installation यहां लाइव डेमो है: http://websocket.aws.awesto.com/चैट/ – nicorellius

9

Django में WebSockets का एक और कार्यान्वयन: https://github.com/jonashagstedt/swampdragon

डॉक्स से: SwampDragon Djangos अद्भुत ORM, Tornados उत्कृष्ट WebSocket समर्थन (। फ़ॉलबैक साथ IE7 में परीक्षण किया गया है), और Redis प्रज्वलन गति का उपयोग करता है।

1

Django omnibus

आंतरिक रूप से बवंडर का उपयोग करता है और अजगर 3 समर्थन हासिल है।

4

2016 तक, Django Channels है, जो Django (1.8 और उच्चतर) में websockets लाता है।

यह part of the official Django project भी है।

+0

Django + चैनल + प्रतिक्रिया के लिए एक पूर्ण ट्यूटोरियल भी मिला: https://codyparker.com/django-channels-with-react/ – np8

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