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
.