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

Josiah Carlson jcarlson at uci.edu
Tue Mar 20 23:11:02 CET 2007

"Alan Kennedy" <python-dev at alan.kennedy.name> wrote:
> def create_connection(address, timeout=sentinel):
>   [snip]
>      if timeout != sentinel:
>        new_socket.settimeout(timeout)
>      if new_socket.gettimeout() == 0:
>        result = new_socket.connect_ex(address)
>      else:
>        new_socket.connect(address)
>        result = new_socket
>   [snip]
> I know that this makes it all more complex, and I'm *not* saying the
> new function should be modified to include these concerns.

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.  If the user provides zero as a
timeout, then they may very well get an exception, which is what they
should expect.  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

 - Josiah

More information about the Python-Dev mailing list