2010-08-07 24 views
31

Tengo un socket que quiero agotar cuando se conecta para que pueda cancelar toda la operación si aún no se puede conectar; también desea utilizar el archivo MAKE para el socket que no requiere tiempo de espera.Tiempo de espera de conexión de socket Python

¿Hay una manera fácil de hacer esto o esto va a ser algo difícil de hacer?

¿El pitón permitir un restablecimiento del tiempo de espera después de conectar de modo que pueda utilizar makefile y tienen un tiempo de espera para la conexión de socket todavía

Respuesta

56

Sólo tiene que utilizar el método de toma de settimeout() antes de intentar la connect(), tenga en cuenta que después de conectarlo debe settimeout(None) para configurar el socket en modo de bloqueo, tal como se requiere para el archivo MAKE. Aquí está el código que estoy utilizando:

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
sock.settimeout(10) 
sock.connect(address) 
sock.settimeout(None) 
fileobj = sock.makefile('rb', 0) 
+5

Para obtener información, el tiempo de espera debe ser expresado en segundos. –

8

Si está utilizando Python2.6 o posterior, es conveniente utilizar socket.create_connection

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

no ayuda mucho para socket unix – Pierrot

Cuestiones relacionadas