Как установить режим отладки в Tornado?
Я гуглил и нашел подсказку, что мне нужно установить режим отладки в Tornado, чтобы он мог автоматически перезагружать файлы при обновлении. Но я не нашел точную строку для вставки. Я пробовал разные комбинации, похожие на эту application.settings = {"Debug": True}
но это не помогает
1 ответ
Вот измененный пример с сайта торнадо:
if __name__ == "__main__":
application = tornado.web.Application([
(r"/", MainHandler)
], debug=True)
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
Для тех, кто любит debug=True
При использовании опции Tornado-multiprocess возникает следующая ошибка:
Traceback (most recent call last):
File "./main.py", line 54, in <module>
server.start(0) # forks one process per cpu
File "/Users/me/Library/Python/2.7/lib/python/site-packages/tornado/tcpserver.py", line 221, in start
process.fork_processes(num_processes)
File "/Users/me/Library/Python/2.7/lib/python/site-packages/tornado/process.py", line 130, in fork_processes
raise RuntimeError("Cannot run in multiple processes: IOLoop instance "
RuntimeError: Cannot run in multiple processes: IOLoop instance has already been initialized. You cannot call IOLoop.instance() before calling start_processes()
Это потому что debug=True
нагрузка IOLoop
и он не может быть загружен дважды.
Согласно документации
Установка debug=True эквивалентна autoreload=True, compiled_template_cache=False, static_hash_cache=False, serve_traceback=True.
Так что при использовании debug=True
Торнадо также устанавливает (для удобства) еще один флаг: autoreload=True
который "следит" за изменениями и перезагружает сервер.
autoreload
Опция, которая не может быть включена при использовании нескольких процессов. Так что вам нужно настроить его так:
if __name__ == "__main__":
application = tornado.web.Application([
(r"/", MainHandler)
], debug=True, autoreload=False)
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()