2012-06-07 11 views
5

पर एकाधिक एप्लिकेशन का समर्थन करें, मुझे आश्चर्य है कि Tornado ढांचे में एक ही IOLoop पर एकाधिक Application पंजीकृत करने के लिए यह संभव है?टोरनाडो: एक ही IOLoop

कुछ

तरह
application1 = web.Application([ 
    (r"/", MainPageHandler), 
]) 
http_server = httpserver.HTTPServer(application1) 
http_server.listen(8080) 

application2 = web.Application([ 
    (r"/appli2", MainPageHandler2), 
]) 
http_server2 = httpserver.HTTPServer(application2) 
http_server2.listen(8080) 

ioloop.IOLoop.instance().start() 

मूल रूप से मैं इतना है कि मेरी webapp की संरचना करने के कोशिश कर रहा हूँ:

  1. कार्यात्मक अनुप्रयोग एक ही उद्देश्य के साथ
  2. कई संचालकों अलग होती है (उदाहरण के लिए व्यवस्थापक/निगरानी/आदि) प्रत्येक वेबपैप पर संभव है
+0

क्या कोई विशिष्ट कारण है कि आपको दो अर्थात् अलग-अलग 'आवेदन की आवश्यकता है? –

+0

अच्छी तरह से, यह एक तकनीकी की तुलना में अधिक कार्यात्मक आवश्यकता है। मूल रूप से मैं उसी टोरनाडो कंटेनर (à la Tomcat) पर दो अनुप्रयोगों को होस्ट करना चाहता था; लेकिन ऐसा लगता है कि यह सही पैटर्न नहीं है। – oDDsKooL

उत्तर

8

सरल पतला जी यदि आप अलग अलग बंदरगाहों के लिए अपने आवेदन पत्र बाध्य करने के लिए थे:

... 
http_server = httpserver.HTTPServer(application1) 
http_server.listen(8080) # NOTE - port 8080 

... 
http_server2 = httpserver.HTTPServer(application2) 
http_server2.listen(8081) # NOTE - port 8081 

ioloop.IOLoop.instance().start() 

इस आधार मामला है कि तूफान के लिए आसान बनाता है। चुनौती यह है कि यूआरआई स्तर पर आवेदन करने के लिए आप एक डिजाइन सीमा पार कर रहे हैं, यह है कि प्रत्येक आवेदन उन सभी यूआरआई के लिए ज़िम्मेदार है जिनके द्वारा अनुरोध किया जाता है।

यदि उन्हें वास्तव में यूआरआई स्तर पर बंदरगाह पर सेवा करने की ज़रूरत नहीं है, तो संभवतः विभिन्न बंदरगाहों पर विभिन्न अनुप्रयोगों को होस्ट करना सबसे अच्छा होगा और एनजीएक्सएक्स/अपाचे यूआरआई रूटिंग करते हैं - जिसमें कुछ भी आवेदन/अनुरोध के साथ गड़बड़ करना शामिल है हैंडलिंग चोट की दुनिया होने जा रहा है।

+0

ठीक है, मैं कुछ पोकिंग/परीक्षण के बाद एक ही निष्कर्ष पर आया था। – oDDsKooL

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