我在示例中错过了ioloop.add_handler():
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
if __name__ == "__main__":
http_server = tornado.web.Application([
(r"/", MainHandler),
])
http_server.listen(8888)
tornado.ioloop.IOLoop.instance().start()
来自:http://www.tornadoweb.org/en/branch3.1/web.html
未明确连接对象http_server和ioloop。这看起来不干净。 ioloop如何发现http_server?
一切正常,我只是好奇。
答案 0 :(得分:1)
最终http_server确实连接到IOLoop,如 HTTPServer源自TCPServer。当您调用listen()方法时,它会调用tornado.netutil.add_accept_handler()调用ioloop.add_handler()。