Add note on connection timeout being larger than specified. Fix #5773

On servers with multiple IPs, such as IPv4 and IPv6, `urllib3` tries each address sequentially until one successfully connects, using the specified timeout for _each_ attempt, leading to a total connection timeout that is a _multiple_ of the requested time.
This commit is contained in:
Rodrigo Silva
2023-12-13 10:05:12 -03:00
committed by GitHub
parent a25fde6989
commit a64f32ba45
+8
View File
@@ -1122,4 +1122,12 @@ coffee.
r = requests.get('https://github.com', timeout=None)
.. note:: The connect timeout applies to each connection attempt to an IP address.
If multiple addresses exist for a domain name, the underlying ``urllib3`` will
try each address sequentially until one successfully connects.
This may lead to an effective total connection timeout *multiple* times longer
than the specified time, e.g. an unresponsive server having both IPv4 and IPv6
addresses will have its perceived timeout *doubled*, so take that into account
when setting the connection timeout.
.. _`connect()`: https://linux.die.net/man/2/connect