Проблема с проверкой, закрыт ли сокет Python или нет. ⇐ Python

Программы на Python
Anonymous
Проблема с проверкой, закрыт ли сокет Python или нет.

Сообщение Anonymous »

У меня есть проект, и в нем есть часть, которая требует отслеживать, какие соединения с моим сервером живы, а какие нет, и на основании этого предпринимать действия. Я много раз пытался заставить его работать, но каждый раз, когда я подключаюсь и мгновенно закрываю соединение, все работает как положено, и программа отбрасывает данные, относящиеся к этому соединению.
Однако, когда я подключаюсь и затем жду несколько секунд перед закрытием соединения, это не работает. Соединение остается активным (живым) в некоторых переменных, что портит мой алгоритм.
Есть ли правильный и эффективный способ справиться с этим?
Вот код Python:
def is_alive(sock):
try:
sock.settimeout(0)
ddt = sock.recv(16, socket.MSG_PEEK)
except BlockingIOError:
return True
except ConnectionResetError:
return False
except Exception as err:
print(err)
if err == 'timed out':
return True
else:
return False
return True


Подробнее здесь: https://stackoverflow.com/questions/798 ... sed-or-not

Вернуться в «Python»