Ich vermute, das ist implementierungsabhängig. Das heißt, für CPython: func:
Von socket.create_connection
,
Wenn keine Timeout zugeführt wird, das globale Standard-Timeout von zurück Einstellung getdefaulttimeout
verwendet wird.
Von 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 der gleichen Datei,
static double defaulttimeout = -1.0; /* Default timeout for new sockets */
So sieht es aus wie Py_None
, aka None
, ist das Standard-Timeout. Mit anderen Worten, urlopen
nie Zeitüberschreitung. Zumindest nicht von Python aus. Ich denke, ein Timeout kann immer noch auftreten, wenn die Netzwerkfunktionen des Betriebssystems selbst Timeouts haben.
Edit: oops, ich denke, ich nicht Quelle Tauchen für die Antwort überhaupt gehen musste, da es in der docs Recht gibt.
Ein Wert von None
zeigt an, dass neue Socket-Objekte keine Zeitüberschreitung aufweisen. Wenn das Socket-Modul zum ersten Mal importiert wird, lautet der Standardwert None
.
so ... es sieht aus Linux-Kernel? – confiq