mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
asyncio: Skip getaddrinfo if host is already resolved.
getaddrinfo takes an exclusive lock on some platforms, causing clients to queue up waiting for the lock if many names are being resolved concurrently. Users may want to handle name resolution in their own code, for the sake of caching, using an alternate resolver, or to measure DNS duration separately from connection duration. Skip getaddrinfo if the "host" passed into create_connection is already resolved. See https://github.com/python/asyncio/pull/302 for details. Patch by A. Jesse Jiryu Davis.
This commit is contained in:
parent
8c084eb77d
commit
d5c2a62100
7 changed files with 283 additions and 67 deletions
|
@ -1573,10 +1573,6 @@ class EventLoopTestsMixin:
|
|||
'selector': self.loop._selector.__class__.__name__})
|
||||
|
||||
def test_sock_connect_address(self):
|
||||
# In debug mode, sock_connect() must ensure that the address is already
|
||||
# resolved (call _check_resolved_address())
|
||||
self.loop.set_debug(True)
|
||||
|
||||
addresses = [(socket.AF_INET, ('www.python.org', 80))]
|
||||
if support.IPV6_ENABLED:
|
||||
addresses.extend((
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue