概述:
非阻塞單線程http服務(A non-blocking, single-threaded HTTP server),在進程之初開啟服務后,和application沒有任何直接的互相影響。
1、
class HTTPServer(TCPServer, Configurable, httputil.HTTPServerConnectionDelegate)
HTTPServer是TCPServer的子類,關于socket連接的部分由TCPServer類實現,HTTPServer只用于實現1.處理連接(connection),2.生成請求(request)。
# in class HTTPServer
# 1.處理連接
def handle_stream(self, stream, address):
context = _HTTPRequestContext(stream, address, self.protocol)//生成請求上下文
conn = HTTP1ServerConnection(stream, self.conn_params, context) //生成請求
self._connections.add(conn) //加入到連接池,請求結束還要移除
conn.start_serving(self)//該連接開始服務
# 2.生成請求
def start_request(self, server_conn, request_conn): //開始處理請求
return _ServerRequestAdapter(self, server_conn, request_conn) //交由_ServerRequestAdapter生成request
2、
class _HTTPRequestContext(object)
#從socket(stream,address protocol)請抽出上下文
#協議族(address_family = stream.socket.family)
#請求地址(remote_ip = address[0])
#協議
# isinstance(stream, iostream.SSLIOStream):
# self.protocol = "https"
# else:
# self.protocol = "http"
3、
class _ServerRequestAdapter(httputil.HTTPMessageDelegate)
//待完善