Python socket connection timeout
You just need to use the socket settimeout()
method before attempting the connect()
, please note that after connecting you must settimeout(None)
to set the socket into blocking mode, such is required for the makefile .Here is the code I am using:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)sock.settimeout(10)sock.connect(address)sock.settimeout(None)fileobj = sock.makefile('rb', 0)
If you are using Python2.6 or newer, it's convenient to use socket.create_connection
sock = socket.create_connection(address, timeout=10)sock.settimeout(None)fileobj = sock.makefile('rb', 0)