2012-06-07 18 views
5

Mi chiedo se sia possibile nel framework Tornado registrare più Application sullo stesso IOLoop?Tornado: supporta più applicazioni sullo stesso IOLoop

Qualcosa di simile

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

Fondamentalmente sto cercando di strutturare la mia webapp in modo che:

  1. applicazioni funzionali sono separati
  2. più gestori con lo stesso scopo (ad esempio admin/monitoraggio/ecc.) su ogni webapp
+0

C'è qualche ragione specifica per cui hai bisogno di due 'Applicazioni' semanticamente separate? –

+0

beh, è ​​più un bisogno funzionale che tecnico. sostanzialmente volevo ospitare due applicazioni sullo stesso container Tornado (à la Tomcat); ma sembra che questo non sia lo schema giusto qui. – oDDsKooL

risposta

8

Il semplice sottile g è se si dovesse associare le applicazioni per diversi porti:

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

Questo è il caso base che Tornado rende facile. La sfida è che il routing alle applicazioni a livello di URI sta attraversando un limite di progettazione, ovvero che ciascuna applicazione è responsabile di tutti gli URI richiesti da esso.

Se tutti hanno veramente bisogno di essere serviti a livello di URI non di porta, sarebbe probabilmente meglio ospitare diverse applicazioni su porte diverse e fare in modo che Nginx/Apache esegua il routing URI - tutto ciò che comporta problemi con l'applicazione/richiesta la gestione sarà un mondo di dolore.

+0

ok, sono arrivato alla stessa conclusione dopo alcuni sondaggi/test. – oDDsKooL

Problemi correlati