Тайм-аут соединения сокетов Python
У меня есть сокет, который я хочу отключить при подключении, чтобы я мог отменить всю операцию, если он еще не может подключиться, но также хочет использовать make файл для сокета, который не требует тайм-аута.
Есть ли простой способ сделать это или это будет трудная вещь?
Предоставляет ли python reset таймаута после подключения, чтобы я мог использовать make файл и все еще имею тайм-аут для подключения сокета
Ответы
Ответ 1
Вам нужно всего лишь использовать метод settimeout()
, прежде чем пытаться выполнить connect()
, обратите внимание, что после подключения вы должны settimeout(None)
чтобы установить сокет в режим блокировки, это необходимо для make файла.
Вот код, который я использую:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(10)
sock.connect(address)
sock.settimeout(None)
fileobj = sock.makefile('rb', 0)
Ответ 2
Если вы используете Python2.6 или новее, удобно использовать socket.create_connection
sock = socket.create_connection(address, timeout=10)
sock.settimeout(None)
fileobj = sock.makefile('rb', 0)
Ответ 3
Для установки времени ожидания Socket вам необходимо выполнить следующие шаги:
import socket
socks = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.settimeout(10.0)