新聞中心
一個(gè)非阻塞的單線程 HTTP 服務(wù)器。

成都網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、成都網(wǎng)站建設(shè)、微信開發(fā)、小程序開發(fā)、集團(tuán)成都定制網(wǎng)頁(yè)設(shè)計(jì)等服務(wù)項(xiàng)目。核心團(tuán)隊(duì)均擁有互聯(lián)網(wǎng)行業(yè)多年經(jīng)驗(yàn),服務(wù)眾多知名企業(yè)客戶;涵蓋的客戶類型包括:主動(dòng)防護(hù)網(wǎng)等眾多領(lǐng)域,積累了大量豐富的經(jīng)驗(yàn),同時(shí)也獲得了客戶的一致認(rèn)可!
典型的應(yīng)用程序與 ?HTTPServer類幾乎沒有直接交互,除了在進(jìn)程開始時(shí)啟動(dòng)服務(wù)器(甚至通常通過tornado.web.Application.listen間接完成)。
在 4.0 版更改:曾經(jīng)存在于此模塊中的 ?HTTPRequest類已移至 ?tornado.httputil.HTTPServerRequest?。 舊名稱保留為別名。
HTTP服務(wù)器
class tornado.httpserver.HTTPServer(request_callback: Union[httputil.HTTPServerConnectionDelegate, Callable[[httputil.HTTPServerRequest], None]], no_keep_alive: bool = False, xheaders: bool = False, ssl_options: Union[Dict[str, Any], ssl.SSLContext] = None, protocol: Optional[str] = None, decompress_request: bool = False, chunk_size: Optional[int] = None, max_header_size: Optional[int] = None, idle_connection_timeout: Optional[float] = None, body_timeout: Optional[float] = None, max_body_size: Optional[int] = None, max_buffer_size: Optional[int] = None, trusted_downstream: Optional[List[str]] = None)
一個(gè)非阻塞的單線程 HTTP 服務(wù)器。
服務(wù)器由 ?HTTPServerConnectionDelegate ?的子類定義,或者為了向后兼容,使用 ?HTTPServerRequest作為參數(shù)的回調(diào)。 委托通常是一個(gè) ?tornado.web.Application?。
?HTTPServer默認(rèn)支持keep-alive 連接(對(duì)于HTTP/1.1 自動(dòng)支持,或者在客戶端請(qǐng)求?Connection: keep-alive時(shí)支持HTTP/1.0)。
如果 ?xheaders為 ?True?,我們支持 ?X-Real-Ip?/?X-Forwarded-For? 和 ?X-Scheme?/?X-Forwarded-Proto? 標(biāo)頭,它們會(huì)覆蓋所有請(qǐng)求的遠(yuǎn)程 IP 和 URI 方案/協(xié)議。 在反向代理或負(fù)載均衡器后面運(yùn)行 Tornado 時(shí),這些表頭很有用。 如果 Tornado 在未設(shè)置受支持的 ?xheaders ?之一的 SSL 解碼代理后面運(yùn)行,則?protocol?參數(shù)也可以設(shè)置為 ?https?。
默認(rèn)情況下,在解析 ?X-Forwarded-For? 標(biāo)頭時(shí),Tornado 將選擇主機(jī)列表中的最后一個(gè)(即最近的)地址作為遠(yuǎn)程主機(jī) IP 地址。 要選擇鏈中的下一個(gè)服務(wù)器,可以將受信任的下游主機(jī)列表作為?trusted_downstream參數(shù)傳遞。 解析 ?X-Forwarded-For? 標(biāo)頭時(shí)將跳過這些主機(jī)。
要使此服務(wù)器為 SSL 流量提供服務(wù),請(qǐng)發(fā)送帶有 ?ssl.SSLContext? 對(duì)象的 ?ssl_options? 關(guān)鍵字參數(shù)。 為了與舊版本的 python 兼容,?ssl_options? 也可能是 ?ssl.wrap_socket? 方法的關(guān)鍵字參數(shù)字典。:
ssl_ctx = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
ssl_ctx.load_cert_chain(os.path.join(data_dir, "mydomain.crt"),
os.path.join(data_dir, "mydomain.key"))
HTTPServer(application, ssl_options=ssl_ctx)?HTTPServer初始化遵循以下三種模式之一(初始化方法在 ?tornado.tcpserver.TCPServer? 上定義):
1、?listen?:簡(jiǎn)單的單進(jìn)程:
server = HTTPServer(app)
server.listen(8888)
IOLoop.current().start()在許多情況下,可以使用 ?tornado.web.Application.listen? 來(lái)避免顯式創(chuàng)建 ?HTTPServer? 的需要。
2、?bind?/?start?:簡(jiǎn)單的多進(jìn)程:
server = HTTPServer(app)
server.bind(8888)
server.start(0) # Forks multiple sub-processes
IOLoop.current().start()使用此接口時(shí),不得將 ?IOLoop傳遞給 ?HTTPServer構(gòu)造函數(shù)。 ?start將始終在默認(rèn)單例 ?IOLoop上啟動(dòng)服務(wù)器。
3、?add_sockets?:先進(jìn)的多進(jìn)程:
sockets = tornado.netutil.bind_sockets(8888)
tornado.process.fork_processes(0)
server = HTTPServer(app)
server.add_sockets(sockets)
IOLoop.current().start()?add_sockets接口更復(fù)雜,但它可以與 ?tornado.process.fork_processes? 一起使用,以便在分叉發(fā)生時(shí)給您更多的靈活性。如果您想以除 ?tornado.netutil.bind_sockets? 之外的其他方式創(chuàng)建偵聽 sockets,則 ?add_sockets? 也可用于單進(jìn)程服務(wù)器。
在 4.0 版更改:添加了 ?decompress_request?、?chunk_size?、?max_header_size?、?idle_connection_timeout?、?body_timeout?、?max_body_size參數(shù)。 添加了對(duì) ?HTTPServerConnectionDelegate實(shí)例作為 ?request_callback的支持。
在 4.1 版更改:?HTTPServerConnectionDelegate.start_request? 現(xiàn)在使用兩個(gè)參數(shù)(?server_conn?,?request_conn?)而不是一個(gè)(?request_conn?)調(diào)用。
在 4.2 版更改:?HTTPServer現(xiàn)在是 ?tornado.util.Configurable? 的子類。
在 4.5 版更改: 添加了?trusted_downstream參數(shù)。
在 5.0 版更改: ?io_loop ?參數(shù)已被刪除。
該類的公共接口主要繼承自 ?TCPServer?,并記錄在該類下。
coroutineclose_all_connections() → None
關(guān)閉所有打開的連接并異步等待它們完成。
此方法與 stop 結(jié)合使用以支持清除關(guān)閉(尤其是對(duì)于單元測(cè)試)。 典型用法是首先調(diào)用 ?stop()? 停止接受新連接,然后 ?await close_all_connections()? 等待現(xiàn)有連接完成。
此方法當(dāng)前不會(huì)關(guān)閉打開的 websocket 連接。
請(qǐng)注意,此方法是協(xié)程,必須與 ?await一起調(diào)用。
網(wǎng)站名稱:創(chuàng)新互聯(lián)Tornado教程:Tornado非阻塞HTTP服務(wù)器
文章起源:http://fisionsoft.com.cn/article/djssdij.html


咨詢
建站咨詢
