Перебор tcp-серверов для подключения
Имеется множество одинаковых TCP серверов на питоне. Каждый из них не имеет очереди и обрабатывает только один запрос, отклоняя остальные, пока не отправит ответ. Тривиальный код представлен ниже:
while True:
tcp_socket_host = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
tcp_socket_host.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,True)
tcp_socket_host.bind(('',2624))
tcp_socket_host.listen(0)
socket_ac,addr_client=tcp_socket_host.accept()
seng_data="response"
socket_ac.send(seng_data.encode('utf-8'))
Имеется общий сервер на php, который выступает в роли TCP клиента и отправляет запросы на py сервера. Код соответственно предоставлен ниже:
while ($cc<30){
$cc=$cc+1;
foreach($adress as $address){
if (($socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {continue;}
$result = socket_connect($socket, $address, $port);
$result = socket_send($socket, $msg, 32767,0);
if ($result === False){continue;}
$out = socket_read($socket, 32767);
if ($out === False xor $out===""){continue;}
break 2;
}
}
$out1 = utf8_decode($out);$output = $out1 . "\n";
socket_close($socket);
Данный вариант работает, но довольно криво. Есть ли какие-то способы доработать это решение или использовать другое? Задача состоит в том, чтобы входящие от пользователя http запросы гарантированно доходили до python части, обрабатывались и возвращались назад. При этом, чтобы этот процесс проходил как можно быстрее и без повторных запросов