-
Notifications
You must be signed in to change notification settings - Fork 286
Closed
Labels
Description
This was found in PR #1250: on windows (Github Actions) the lookup for localhost takes 1 second.
This is because:
- Windows retries connect() with a timeout
- the machine has IPv6 and IPv4 but Testserver only binds the port on IPv4
- the test clients connect to "localhost"
This combination leads to every test first spending 1 second trying to connect to localhost on IPv6 (this fails because the server is only IPv4). Eventually connect() succeeds on IPv4.
I would be nice if we could have the test servers bind the port on both IPv4 and IPv6 but unfortunately socketserver.TCPServer does not seem to support IPv6 before 3.8. This works on later versions:
class DualServer(six.moves.socketserver.TCPServer):
address_family = socket.AF_INET6
# this leads to serving on both INET4 and INET6
server = DualServer(('::', 0), SimpleHTTPRequestHandler)
server.serve_forever()
I think the correct choice at the moment is to just use "127.0.0.1" instead of "localhost" in the tests (clients) -- this should mean we don't waste time trying IPv6. Maybe Teodora wants to fix this there but I'm filing this so we don't lose track.
sechkovajoshuagl