Форум сайта python.su
Постепенно пытаюсь разобраться с tornado. Но с английским туго и с web фреймворками раньше дела не имел, объясните пожалуйста, зачем нужен метод RequestHandler.initialize() и когда он запускается?
Офлайн
Это вроде как конфигурирование хандлера после его создания. Используется например в хандлере раздачи статики, для настройки root пути.
Офлайн
А разве все не на оборот? В примере в доках, в RequestHandler.initialize() передаётся экзмепляр БД, на сколько я понял.
Отредактировано young_programmer (Ноя. 20, 2013 05:22:03)
Офлайн
young_programmer
что тебе надо то и делает, тебе как-бы дают возможность вставить свой код на этом этапе.
Это что-то вроде __init__
Офлайн
SingularityНу вот __init__ на пример запускается при создании экземпляра класса. А когда запускается RequestHandler.initialize?
Это что-то вроде __init__
Офлайн
при каждом конекте
Отредактировано Singularity (Ноя. 20, 2013 08:58:37)
Офлайн
Спасибо
Офлайн
На каждый конект создается экземпляр хандлера, после конфигурируется (до вызова get/post), вот пример настройки StaticFileHandler, 3-й параметр должен передаваться в initialize:
application = web.Application([ (r"/content/(.*)", web.StaticFileHandler, {"path": "/var/www"}), ])
Отредактировано o7412369815963 (Ноя. 20, 2013 09:49:34)
Офлайн
Если вы говорите, что RequestHandler.initialize запускается
o7412369815963то тогда в чем его разница с RequestHandler.prepare()??? Как я понимаю RequestHandler.initialize запускается при запуске сервера и в этот момент происходит инициализация, а RequestHandler.prepare запускается при вызове обработчика, перед вызовом (post, get или других).
после конфигурируется (до вызова get/post)
Офлайн
young_programmerНе логично, т.к. это метод для экземпляра, а экземпляр создается на каждый запрос. Но вы можете проверить добавить print в них (или продебажить).
Как я понимаю RequestHandler.initialize запускается при запуске сервера и в этот момент происходит инициализация
young_programmerПро этот не знаю, наверно его ещё не было когда я юзал торнадо.
RequestHandler.prepare
Офлайн