这是一个非阻塞的,单线程的httpserver。这个类一般是不会被应用程序直接调用的,它一般是被上层的tornado.web.Application.listen方法调用,因为这个listen方法是这样定义的
def listen(self, port, address="", **kwargs): """Starts an HTTP server for this application on the given port. This is a convenience alias for creating an `.HTTPServer` object and calling its listen method. Keyword arguments not supported by `HTTPServer.listen <.TCPServer.listen>` are passed to the `.HTTPServer` constructor. For advanced uses (e.g. multi-process mode), do not use this method; create an `.HTTPServer` and call its `.TCPServer.bind`/`.TCPServer.start` methods directly. Note that after calling this method you still need to call ``IOLoop.current().start()`` to start the server. Returns the `.HTTPServer` object. .. versionchanged:: 4.3 Now returns the `.HTTPServer` object. """ # import is here rather than top level because HTTPServer # is not importable on appengine from tornado.httpserver import HTTPServer server = HTTPServer(self, **kwargs) server.listen(port, address) return server
@staticmethod和@classmethod,实例方法的区别
@classmethod 是一个函数修饰符,它表示接下来的是一个类方法,而对于平常我们见到的则叫做实例方法。 类方法的第一个参数cls,而实例方法的第一个参数是self,表示该类的一个实例。因为持有cls参数,可以来调用类的属性,类的方法,实例化对象等,避免硬编码。
静态方法则没有,它基本上跟一个全局函数相同,一般来说用的很少,只是包含在类结构中,实际跟类没有关系,要调用到这个类的一些属性方法,只能直接类名.属性名或类名.方法名。
版本4.0的变化
HTTPRequest类被移动到了tornado.httputil.HTTPServerRequest,原来的名字还是可以使用的
HTTpServer默认支持keep-alive连接,自动支持HTTP/1.1,当客户端要求keep-alive连接时变为HTTP/1.0
时间: 2024-10-17 21:49:14