[Python-Dev] Adding timeout to socket.py and httplib.py

Alan Kennedy python-dev at alan.kennedy.name
Tue Mar 20 23:21:30 CET 2007


[Josiah]
> But now the result could be either an error code OR a socket.  One of
> the reasons to provide a timeout for the create_connection call, if I
> understand correctly, is to handle cases for which you don't get a
> response back in sufficient time.

AFAICT, that's the only reason. It's not to handle blocking sockets,
that's the default operation of sockets. And it's not to handle
non-blocking sockets either.

>If the user provides zero as a
> timeout, then they may very well get an exception, which is what they
> should expect.

Yes, they should expect it. And they would handle it like this

try:
  new_socket = socket.create_connection(address, 0):
except socket.error:
  import errno:
  if errno.errno == 10035 # or relevant platform specific symbolic constant
    # socket is still connecting
  else:
    # there was a real socket error

> Then again, even with an arbitrary timeout, an exception
> is possible (especially if a host is down, etc.), and hiding the
> exceptional condition (didn't connect in the allotted time) is a bad
> thing.

See above.

Regards,

Alan.


More information about the Python-Dev mailing list