3 # This is a simple HTTP client to test readiness of the asynchronously
4 # launched HTTP server.
11 def run(url, timeout, basic_auth):
12 deadline = time.time() + timeout
13 req = urllib.request.Request(url, method="HEAD")
17 encoded_credentials = base64.b64encode(
18 basic_auth.encode("ascii")
20 req.add_header("Authorization", f"Basic {encoded_credentials}")
23 response = urllib.request.urlopen(req)
24 print(f"Connection successful (code: {response.getcode()})")
26 except urllib.error.URLError as e:
28 if time.time() > deadline:
30 f"All connection attempts failed within {timeout} seconds."
36 if __name__ == "__main__":
39 parser = argparse.ArgumentParser()
41 "--basic-auth", "-B", help="Basic auth tuple like user:pass"
49 help="Maximum seconds to wait for successful connection attempt "
50 "[default: 10 seconds]",
52 parser.add_argument("url", type=str, help="URL to connect to")
53 args = parser.parse_args()
58 basic_auth=args.basic_auth,