2015-08-04 2 views
2

Я новичок в сервере python tornado, и я оценивал торнадо python для своего следующего проекта, который должен работать в среде реального времени. Я запустил пример кода из github с внедрением Web Socket.Добавление нового обработчика к запущенному серверу pornon tornado

это пример фрагмента кода.

app = web.Application([ 
     (r'/', IndexHandler), 
     (r'/ws', SocketHandler), 
     (r'/api', ApiHandler), 
     (r'/(favicon.ico)', web.StaticFileHandler, {'path': '../'}), 
     (r'/(rest_api_example.png)', web.StaticFileHandler, {'path': './'}), 
    ]) 

    if __name__ == '__main__': 
     app.listen(8080) 
     ioloop.IOLoop.instance().start() 

Код работает должным образом и отлично.

Можно ли дать облачное решение, чтобы я мог добавлять новые маршруты и обработчики динамически в веб-приложение без перезапуска сервера, слушая порт.

Например, Сервер запускается и обслуживает index.html для маршрута '/', и у него есть n зрителей. Если появилось новое требование с маршрутом '/ foo' для обслуживания foo.html без блокировки n зрителей маршрута '/'. Каковы возможные способы обращения без перезапуска сервера, если таковые имеются.

ответ

4

Вам понадобится метод tornado.web.Applicationadd_handlers; используйте его следующим образом:

app.add_handlers(
    r".*", # match any host 
    [ 
     (
      r"/foo/([^/]*)", 
      FooHandler 
     ), 
     (
      r"/bar/([^/]*)", 
      BarHandler 
     ), 
    ] 
) 

Судя по его коду, он ничего не блокирует.

Смежные вопросы