From ffd2c7f963cc9a7f9799ef35c41db28bbda3be09 Mon Sep 17 00:00:00 2001 From: Matt Martz Date: Wed, 25 Mar 2015 09:57:00 -0500 Subject: [PATCH] Add some debugging for failed http requests using catch_request --- speedtest_cli.py | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/speedtest_cli.py b/speedtest_cli.py index 5e822f0..ca3ef6c 100755 --- a/speedtest_cli.py +++ b/speedtest_cli.py @@ -201,9 +201,10 @@ def catch_request(request): try: uh = urlopen(request) - return uh + return uh, False except (HTTPError, URLError, socket.error): - return False + e = sys.exc_info()[1] + return None, e class FileGetter(threading.Thread): @@ -349,9 +350,9 @@ def getConfig(): """ request = build_request('https://www.speedtest.net/speedtest-config.php') - uh = catch_request(request) - if uh is False: - print_('Could not retrieve speedtest.net configuration') + uh, e = catch_request(request) + if e: + print_('Could not retrieve speedtest.net configuration: %s' % e) sys.exit(1) configxml = [] while 1: @@ -393,12 +394,14 @@ def closestServers(client, all=False): 'https://www.speedtest.net/speedtest-servers-static.php', 'http://c.speedtest.net/speedtest-servers-static.php', ] + errors = [] servers = {} for url in urls: try: request = build_request(url) - uh = catch_request(request) - if uh is False: + uh, e = catch_request(request) + if e: + errors.append('%s' % e) raise SpeedtestCliServerListError serversxml = [] while 1: @@ -443,7 +446,8 @@ def closestServers(client, all=False): break if not servers: - print_('Failed to retrieve list of speedtest.net servers') + print_('Failed to retrieve list of speedtest.net servers:\n\n %s' % + '\n'.join(errors)) sys.exit(1) closest = [] @@ -739,9 +743,9 @@ def speedtest(): request = build_request('https://www.speedtest.net/api/api.php', data='&'.join(apiData).encode(), headers=headers) - f = catch_request(request) - if f is False: - print_('Could not submit results to speedtest.net') + f, e = catch_request(request) + if e: + print_('Could not submit results to speedtest.net: %s' % e) sys.exit(1) response = f.read() code = f.code