這是一個非阻塞的,單線程的httpserver。這個類通常是不會被應用程序直接調用的,它通常是被上層的tornado.web.Application.listen方法調用,由於這個listen方法是這樣定義的python
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,實例方法的區別
web
@classmethod 是一個函數修飾符,它表示接下來的是一個類方法,而對於日常咱們見到的則叫作實例方法。 類方法的第一個參數cls,而實例方法的第一個參數是self,表示該類的一個實例。由於持有cls參數,能夠來調用類的屬性,類的方法,實例化對象等,避免硬編碼。app
靜態方法則沒有,它基本上跟一個全局函數相同,通常來講用的不多,只是包含在類結構中,實際跟類沒有關係,要調用到這個類的一些屬性方法,只能直接類名.屬性名或類名.方法名。函數
版本4.0的變化tornado
HTTPRequest類被移動到了tornado.httputil.HTTPServerRequest,原來的名字仍是能夠使用的oop
HTTpServer默認支持keep-alive鏈接,自動支持HTTP/1.1,當客戶端要求keep-alive鏈接時變爲HTTP/1.0
this