Вы можете установить время ожидания в сокете на максимальное количество времени, которое вы хотите ждать каждый раз (вызывайте его снова перед каждым listen
временем, которое вы хотите ждать это время вокруг) - вы получите исключение, socket.timeout , если таймер истекает, поэтому убедитесь, что у него есть try
/ except socket.timeout:
, чтобы поймать это дело. (A select.select
с таймаутом также сработает и имеет преимущество в том, что может ожидать несколько сокетов и для различных условий, но он немного менее прямой как ответ на ваш очень специфический вопрос).
В прошлый раз я получил много отрицательных ответов, я дал такой ответ ... по-видимому, пуристами, которые хотят, чтобы никто никогда не проверял программы, которые они не одобряют (например, с помощью очень своеобразной конструкции, такой как ваша, в отличие от многих нормальный, обычный способ написания серверов). Посмотрим, что будет на этот раз! -)