What is the global default timeout What is the global default timeout python python

What is the global default timeout


I suspect this is implementation-dependent. That said, for CPython:

From socket.create_connection,

If no timeout is supplied, the global default timeout setting returned by :func:getdefaulttimeout is used.

From socketmodule.c,

static PyObject *socket_getdefaulttimeout(PyObject *self){    if (defaulttimeout < 0.0) {        Py_INCREF(Py_None);        return Py_None;    }    else        return PyFloat_FromDouble(defaulttimeout);}

Earlier in the same file,

static double defaulttimeout = -1.0; /* Default timeout for new sockets */

So it looks like Py_None, aka None, is the default timeout. In other words, urlopen never times out. At least not from the Python end. I guess a timeout can still occur if the networking functions supplied by the OS have timeouts themselves.


Edit: oops, I guess I didn't need to go source diving for the answer at all, since it's right there in the docs.

A value of None indicates that new socket objects have no timeout. When the socket module is first imported, the default is None.