in apisix/runner/server/server.py [0:0]
def _threaded(r: RPCRequest):
while True:
try:
buffer = r.conn.recv(PROTOCOL_HEADER_LEN)
protocol = NewServerProtocol(buffer, 0)
err = protocol.decode()
if err.code != RESP_STATUS_CODE_OK:
r.log.error(err.message)
break
r.request.ty = protocol.type
r.log.info("request type:{}, len:{}", protocol.type, protocol.length)
r.request.data = r.conn.recv(protocol.length)
handler = NewServerHandle(r)
response = handler.dispatch()
protocol = NewServerProtocol(response.Output(), protocol.type)
protocol.encode()
r.log.info("response type:{}, len:{}", protocol.type, protocol.length)
r.conn.sendall(protocol.buffer)
except socket.timeout as e:
r.log.info("connection timout: {}", e.args.__str__())
break
except socket.error as e:
r.log.error("connection error: {}", e.args.__str__())
break
r.conn.close()
del r