Тайм-аут соединения сокетов Python

У меня есть сокет, который я хочу отключить при подключении, чтобы я мог отменить всю операцию, если он еще не может подключиться, но также хочет использовать make-файл для сокета, который не требует тайм-аута.

Есть ли простой способ сделать это, или это будет сложно?

Предоставляет ли python сброс таймаута после подключения, чтобы я мог использовать make-файл и все еще имею тайм-аут для подключения сокета

Вам просто нужно использовать метод 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) 

Если вы используете Python2.6 или новее, удобно использовать socket.create_connection

 sock = socket.create_connection(address, timeout=10) sock.settimeout(None) fileobj = sock.makefile('rb', 0)