Это поможет увидеть как ваш объект RequestHandler, так и то, как вы отправляете URL в Tornado.Насколько мне известно, только отсутствующие реализации метода HTTP или отсутствующее определение options () могут привести к тому, что торнадо испустит 405.
Возможно, проблема не в том, что вы не реализуете надлежащие методы, а в том, что URLвы звоните не так, как вы думаете.
Что говорят логи?Вы запускаете торнадо в режиме отладки?Пока я задаю вопросы, какую версию торнадо вы используете?
Попробуйте перевести торнадо в режим отладки и добавить несколько сообщений logging.debug, чтобы убедиться, что ваш запрос даже поступает в ваш RequestHandler, и узнать больше о происходящем.
Для запуска в режиме отладки, с торнадо 1.1 (может быть, 1.0? Не помню), вы можете просто запустить свое приложение с помощью '--logging = debug'.Предполагая, что у вас есть вызовы logging.debug в вашем обработчике, вы получите сообщения :)
Вот пример обработчика, использующего включенную демонстрацию helloworld.py:
class MainHandler(tornado.web.RequestHandler):
def get(self):
logging.debug("I'm in ur hndlrz, runnin yr codez")
self.write("Hello, world")
Вот вывод журнала:
furby:helloworld jonesy$ ./helloworld.py --logging=debug
[D 101207 16:12:34 helloworld:28] I'm in ur hndlrz, runnin yr codez
[I 101207 16:12:34 web:849] 200 GET / (127.0.0.1) 1.03ms
[W 101207 16:12:34 web:849] 404 GET /favicon.ico (127.0.0.1) 0.34ms