Я пытаюсь отправить запросы от клиента на базовый сервер, который затем перенаправляет их на еще 2 сервера, к которым подключен базовый сервер.
(Эти 2 сервера находят соответствие с запросом в своем база данных, если она совпадает, они отправляют запрос обратно, если нет совпадения, они ничего не отправляют)
Сначала я отправляю запрос с базового сервера на 1-й сервер с именем ts1, если я не получаю ответ Я отправляю его на второй сервер, который называется ts2. Если я также не получаю ответ от ts2, я отправляю клиенту сообщение об ошибке на хосте.
Я пробовал эти циклы while и inner, чтобы выполнить sh эту задачу, но моя программа зависает после отправки первого запроса. Поскольку сервер ts1 ничего не отправляет в первом запросе.
Как я могу исправить свой код, чтобы он не зависал и весь код выполнялся? может быть его неблокирование или блокировка розеток? Я не знаю, как это реализовано.
while True:
# receive a message from the client
data_from_client = csockid.recv(1024)
word = data_from_client.decode('utf-8').lower()
if word == '':
break
print('[Client]: ' + word)
print("[ls Server]: Sending " + word + " to ts1 & ts2 for Query....")
ts1.send(word.encode('utf-8'))
while True:
search_from_ts1 = ts1.recv(1024)
ts1_server_answer = search_from_ts1.decode('utf-8')
print("[ls Server]: sending reply from ts1 server " + ts1_server_answer + " to Client")
csockid.send(ts1_server_answer.encode('utf-8'))
if not search_from_ts1:
ts2.send(word.encode('utf-8'))
while True:
search_from_ts2 = ts2.recv(1024)
ts2_server_answer = search_from_ts2.decode('utf-8')
print("[ls Server]: sending reply from ts2 server " + ts2_server_answer + " to Client")
csockid.send(ts2_server_answer.encode('utf-8'))
if not search_from_ts2:
print("[ls Server]: No match found in both ts1 & ts2")
error = " - Error:HOST NOT FOUND"
csockid.send(error.encode('utf-8'))
break
break
if not data_from_client:
break