[Python-Dev] Adding timeout to socket.py and httplib.py (original) (raw)

Alan Kennedy python-dev at alan.kennedy.name
Tue Mar 20 16:53:48 CET 2007


[Alan Kennedy]

I see that your updated socket.connect() method takes a timeout parameter, which defaults to None if not present, e.g.

[Facundo Batista]

I did NOT update a connect() method. I created a connect() function, in the module socket.py (there's also a connect() method in the socket object, but I didn't touch it).

Sorry, my mistake.

I realise now that you're creating a whole new function, dedicated to the special (but extremely common) case of creating a fully connected client socket. My fault for not realising that first off.

So, a question I would ask is: Is "connect" the right name for that function?

Perhaps a better name might be "create_connected_client_socket", or something equally descriptive?

Another question I would ask is: "How do I ensure that my newly created connected client socket is in blocking mode, without making any assumptions about the value of socket.getdefaulttimeout()?"

If the answer to this question is "you can't", then I would suggest a function signature and implementation like this instead

def connect(address, **kwargs): [snip] if kwargs.has_key('timeout'): sock.settimeout(kwargs['timeout']) [snip]

This would of course mean that the user would have to explicitly name the 'timeout' parameter, but that's a good thing in this case, IMO.

Regards,

Alan.



More information about the Python-Dev mailing list