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

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


[Facundo]

But, I recognize that maybe it's [connect] not the best name. What about "createconnection"?

I have no strong feelings about it, other than to say it should not be "connect". How about

There's no need to include "timeout" in the name, IMO.

[Alan]

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()?"

[Facundo]

Call like this:

newsock = socket.connect((..., ...)) newsock.setblocking(1)

Ah, but it's too late by the time the socket.connect call returns: the timeout/blocking behaviour of the socket.connect call is the very thing we're trying to control.

Whenever I look at the proposed API, I think: What happens when the socket.connect call is preceded by a call which changes the default socket timeout/blocking behaviour, e.g.

socket.setdefaulttimeout(1) newsock = socket.connect(HOST, PORT, None) # <-- None param ignored newsock.setblocking(1) # <-- This does not affect the behaviour of the connect

I.E. I do not get the blocking behaviour I want. The proposed API does not permit me to get blocking behaviour by specifying a timeout value of None.

Whereas with the slightly modified API I suggested earlier, it simply becomes

socket.setdefaulttimeout(1) newsock = socket.connect(HOST, PORT, timeout=None)

newsock.setblocking(1) # <-- No longer relevant

Regards,

Alan.



More information about the Python-Dev mailing list