def process_connection(self, connection): with connection: r = b'' while True: content = connection.recv(1024) r += content if len(content) != 1024: break log('request log:\n <{}>'.format(r)) r = r.decode() if r: request = Request(r) response = Response() m_num = len(self.middlewares) if m_num > 0: # 下一个中间件的 index next_i = 0 def next(): nonlocal next_i if next_i == m_num: self.handle_path(request, response) else: m = self.middlewares[next_i] next_i += 1 m(request, response, next) next() else: self.handle_path(request, response) # 把响应发送给客户端 connection.sendall(response.toHttp())