2012-01-04 12 views
7

मैं dornango बैकएंड के साथ django व्यवस्थापक पैनल होना चाहता हूं, जो ऑनलाइन गेम से अनुरोध संसाधित करेगा।टॉरनाडो वेब सर्वर पर Django चलाने के लिए सबसे अच्छा तरीका क्या है async + django admin + django orm संभावनाएं?

wsgi_app = tornado.wsgi.WSGIContainer(
django.core.handlers.wsgi.WSGIHandler()) 
tornado_app = tornado.web.Application(
[ 
    ('/hello-tornado', HelloHandler), 
    ('.*', tornado.web.FallbackHandler, dict(fallback=wsgi_app)), 
]) 
server = tornado.httpserver.HTTPServer(tornado_app) 
server.listen(options.port) 
tornado.ioloop.IOLoop.instance().start() 

HelloHandler एक बैकएंड पार्सर होने जा रहा है: मैं इस समय नहीं जानता, यह एक अच्छा विचार अगले रास्ते में Django एप्लिकेशन लोड करने के लिए है।

क्या मैं wsgi + ioloop के संयोजन में कुछ प्रदर्शन खो दूंगा?

यदि यह एक खराब समाधान है, तो 2 ऐप्स चलाने के लिए यह संभव है: django admin और tornado web। क्या आप जवाब दे सकते हैं कि मैं टोरनोडो ऐप के साथ Django ORM का उपयोग कैसे कर सकता हूं?

+0

क्यों न केवल Django का उपयोग करें? –

+0

लगातार गेम अनुरोधों के लिए django व्यवस्थापक पैनल और कुछ async कोड होना आवश्यक है –

उत्तर

14

बस यह समीकरण लें और इसे हल करें। एक्स

  • आप Django ORM करना चाहते हैं - - वाई
  • आप Django व्यवस्थापक करना चाहते हैं - जेड
  • अब, चाल

    • आप गैर-अवरुद्ध आईओ करना चाहते हैं बिंदु से बिंदु:

      • एक्स - टॉरनाडो के लिए पर्याप्त है।
      • जेड के लिए - django पर्याप्त है। मुझे नहीं लगता, आप हजारों प्रशासक चाहते हैं, जो एक ही समय में आपकी साइट का प्रबंधन करते हैं।
      • वाई के लिए यह कठिन है। Django ओआरएम खुद को अवरुद्ध कर रहा है।

      यहां का सबसे अच्छा तरीका - टोरनाडो के साथ Django ORM का उपयोग न करें।

      दूसरा तरीका - यदि आप सुनिश्चित हैं कि यह पूरे एप्लिकेशन को अवरुद्ध नहीं करेगा तो आप गहराई से गोता लगा सकते हैं और इसे एकीकृत कर सकते हैं। this उत्तर से समाधान लें।

      तीसरा तरीका - आप अपने डीजेंगो एप्लिकेशन को सेवा में परिवर्तित कर सकते हैं, जो ओआरएम के साथ भारी काम करता है, और आप इस सेवा को AsyncHTTPCLient टर्ननाडो से एक्सेस कर सकते हैं।

      चौथा तरीका - अपने django अनुप्रयोग में टॉरनेडो वेब सर्वर को एकीकृत करें। असल में, यह आपको छोटे प्रदर्शन को बढ़ावा देगा।

      पांचवां रास्ता - दो टर्ननाडो वेब सर्वर का उपयोग करें। पागल लगता है, हाँ। Django ORM एकीकृत के साथ एक का उपयोग करें, और AsyncHTTPClient के साथ दूसरा।

      मेरा मानना ​​है कि आप 2 सर्वश्रेष्ठ दुनिया ले सकते हैं।

    +0

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

    5

    डीजेगो असीमित नहीं है, इसलिए टोरनाडो में डीजेगो चलाने से टोरनाडो से मिलने वाले अधिकांश प्रदर्शन लाभ निकल जाएंगे।

    यदि आप अधिकतम एसिंक प्रदर्शन चाहते हैं, तो आपको एक गैर-अवरुद्ध डेटाबेस के साथ टोरनाडो का उपयोग करना चाहिए (मुझे लगता है कि आप SQL डेटाबेस के साथ उपयोग के लिए Django व्यवस्थापक चाहते हैं)।

    यदि आप विकास की अधिकतम आसानी चाहते हैं, तो इसके ओआरएम सिस्टम और व्यवस्थापक उपकरण के साथ Django का उपयोग करें।

    दुर्भाग्यवश, आप दोनों दुनिया के सर्वश्रेष्ठ मिश्रणों को मिश्रण नहीं कर सकते हैं।

    तो, हाँ, आप प्रदर्शन खो देंगे। इस स्थिति में मैं शायद टोरनाडो का उपयोग करूंगा और Django व्यवस्थापक को छोड़ दूंगा। यदि आप एक समझौता पर मृत सेट हैं तो आप दो ऐप्स लिख सकते हैं, डेटाबेस साझा कर सकते हैं, लेकिन इसका मतलब यह होगा कि आपको दो डेटा एक्सेस परतों को बनाए रखने की आवश्यकता है।