0

我错过了示例中的 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?

一切正常,我只是好奇。

4

1 回答 1

1

最终 http_server 确实连接到 IOLoop,因为 HTTPServer是从TCPServer派生的。当你调用它的listen()方法时,它会依次调用tornado.netutil.add_accept_handler(),它调用ioloop.add_handler()。

于 2013-11-13T21:59:13.667 回答