J'ai un socket que je veux expirer lors de la connexion afin que je puisse annuler toute l'opération s'il ne peut pas se connecter mais il veut aussi utiliser le fichier makefile pour le socket qui ne nécessite pas de timeout.
Y a-t-il un moyen facile de faire ceci ou est-ce que ce sera une chose difficile à faire?
Python autorise-t-il une réinitialisation du délai après connexion afin que je puisse utiliser makefile tout en conservant un délai pour la connexion socket?
Il vous suffit d’utiliser la méthode socket settimeout()
avant de tenter la fonction connect()
, veuillez noter qu’après la connexion, vous devez settimeout(None)
pour définir le socket en mode de blocage, ce qui est nécessaire pour le fichier makefile . en utilisant:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(10)
sock.connect(address)
sock.settimeout(None)
fileobj = sock.makefile('rb', 0)
Si vous utilisez Python2.6 ou une version plus récente, utilisez socket.create_connection
sock = socket.create_connection(address, timeout=10)
sock.settimeout(None)
fileobj = sock.makefile('rb', 0)
Pour définir le délai d’exécution du socket, vous devez suivre ces étapes:
import socket
socks = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.settimeout(10.0)