2012-06-07 8 views
5

Me pregunto si es posible en el marco Tornado registrar Application múltiples en el mismo IOLoop?Tornado: admite múltiples aplicaciones en el mismo IOLoop

Algo así como

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() 

Básicamente estoy tratando de estructurar mi aplicación web de forma que:

  1. aplicaciones funcionales están separados
  2. varios controladores con el mismo propósito (por ejemplo admin/monitoreo/etc.) son posibles en cada aplicación web
+0

¿Hay alguna razón específica por la que necesita dos 'Aplicaciones' semánticamente separadas? –

+0

bien, es más una necesidad funcional que una técnica. básicamente quería alojar dos aplicaciones en el mismo contenedor Tornado (a la Tomcat); pero parece que este no es el patrón correcto aquí. – oDDsKooL

Respuesta

8

La delgada simple g es si se va a unir sus aplicaciones a diferentes puertos:

... 
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() 

Este es el caso base que Tornado hace fácil. El desafío es que, mediante el enrutamiento a aplicaciones en el nivel de URI, se cruza un límite de diseño, que es que cada aplicación es responsable de todos los URI que solicite.

Si todos realmente necesitan ser atendidos en el nivel URI no en puerto, probablemente sería mejor alojar diferentes aplicaciones en diferentes puertos y hacer que Nginx/Apache hagan el enrutamiento URI, cualquier cosa que implique jugar con la Aplicación/Solicitud el manejo va a ser un mundo de dolor.

+0

bien, llegué a la misma conclusión después de algunas pruebas/pruebas. – oDDsKooL

Cuestiones relacionadas