from urllib.request import AbstractBasicAuthHandler import pyperf import email class AuthHandler(AbstractBasicAuthHandler): handler = None def retry_http_basic_auth(self, host, req, realm): self.realm = realm return None realm = 'realm@example.com' simple = f'Basic realm="{realm}"' repeat_10_3 = 'Basic ' + ', ' * (10 ** 3) + 'A' repeat_10_6 = 'Basic ' + ', ' * (10 ** 6) + 'A' handler = AuthHandler() host = None req = None class Headers: def __init__(self, header): self.header = header def get(self, *ignored_args): return self.header def get_all(self, *ignored_args): return [self.header] for header in (simple, repeat_10_3, repeat_10_6): handler.realm = None handler.http_error_auth_reqed("WWW-Authenticate", host, req, Headers(header)) assert handler.realm == realm runner = pyperf.Runner() for name, header in ( ('simple', simple), ('repeat 10^3', repeat_10_3), ('repeat 10^6', repeat_10_6), ): headers = Headers(header) runner.bench_func(name, handler.http_error_auth_reqed, "WWW-Authenticate", None, None, headers)