2017-01-23 12 views
2

Я пытаюсь узнать, как использовать веб-инфраструктуру python Tornado. Я уже знаком с фляжкой, но до сих пор мне трудно даже запустить простое приложение. Моя структура каталогов выглядит следующим образом:Инициализировать ошибку при запуске простого приложения Porn Tornado

  • App
    • статическую
    • шаблоны
      • Testing.html -app.py

Мой код в app.py просто:

define("port", default=5000, help="run on the given port", type=int) 

class Application(tornado.web.Application): 
    def __init__(self): 
     handlers = [ 
      (r"/", MainHandler), 
     ] 
     settings = dict(
      template_path=os.path.join(os.path.dirname(__file__), "templates"), 
      static_path=os.path.join(os.path.dirname(__file__), "static"), 
      debug=True, 
     ) 
     super(Application, self).__init__(handlers, **settings) 

class MainHandler(tornado.web.RedirectHandler): 
    def get(self): 
     self.render("Testing.html") 

if __name__ == "__main__": 
    http_server = tornado.httpserver.HTTPServer(Application()) 
    http_server.listen(options.port) 
    tornado.ioloop.IOLoop.current().start() 

Однако, когда я бегу app.py я получаю ошибку:

ERROR:tornado.application:Uncaught exception 
Traceback (most recent call last): 
File "/vt/release/dist/3p/anaconda/lib/python2.7/site-packages/tornado/http1connection.py", line 238, in _read_message 
delegate.finish() 
File "/vt/release/dist/3p/anaconda/lib/python2.7/site-packages/tornado/httpserver.py", line 289, in finish 
self.delegate.finish() 
File "/vt/release/dist/3p/anaconda/lib/python2.7/site-packages/tornado/web.py", line 2047, in finish 
self.execute() 
File "/vt/release/dist/3p/anaconda/lib/python2.7/site-packages/tornado/web.py", line 2067, in execute 
**self.handler_kwargs) 
File "/vt/release/dist/3p/anaconda/lib/python2.7/site-packages/tornado/web.py", line 187, in __init__ 
self.initialize(**kwargs) 

TypeError: initialize() takes at least 2 arguments (1 given) 

Почему это? Я должен упомянуть, что это не дает мне ошибку, пока я не попытаюсь подключиться.

+2

Пожалуйста, предоставьте сообщение об ошибке * whole *. Должна быть трассировка стека, которая показывает всю последовательность вызовов. На другом конце будет отображаться строка в вашем собственном коде. – Prune

+0

@Prune Я добавил полное сообщение, что на самом деле он не содержит строку в моем собственном коде, хотя – klib

ответ

3

Ваш MainHandler должен наследовать от RequestHandler, а не RedirectHandler.

(Подробности: для RedirectHandler требуются два аргумента: «self» и «target_path». Вы должны указать целевой путь в списке обработчиков в приложении .__ init__. Поскольку у вас нет этого второго аргумента в списке обработчиков и вы неправильно наследуете от RedirectHandler, Tornado получает исключение.)

+0

Это неловко, я не знаю, был ли я агрессивно заполнен вкладкой или смотрел пример, где это было использовано – klib

+0

@klib: собираюсь сделать ту же самую глупую ошибку, и теперь они найдут это и смогут быстро исправить ситуацию. –

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

  • Нет связанных вопросов^_^