Я пытаюсь заставить сервер ждать, пока клиент установит соединение, получить данные от клиента, использовать эти данные, чтобы сделать запрос API и отправить ответ клиенту. Все работает отлично, за исключением отправки ответа клиенту (функция клиента просто отключается). Если поместить conn.sendall («что-нибудь здесь») внутри цикла while True, это работает, но, очевидно, не возвращает то, что мне нужно для возврата. Размещение conn.sendall вне цикла приводит к тайм-ауту на стороне клиента.
Код сервера
conn, addr = s.accept()
print('Connected by', addr)
fragments = []
while True:
chunk = conn.recv(4096)
if not chunk:
break
fragments.append(chunk)
action = "".join(fragments)
URL = "http://172.31.55.211/" + action
print("making request")
r = requests.get(url = URL)
data = r.json()
conn.sendall(data['message'])
Код клиента
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print(s)
s.connect((HOST, PORT))
s.sendall(b'hellocvs')
data = s.recv(1024)
print('Received', repr(data))
return {
'statusCode': 200,
'body': json.dumps(str(data))
}