Browse Source

Catch socket.timeout, which is a separate exception class from TimeoutError before Python 3.10

master
JustAnotherArchivist 2 years ago
parent
commit
0b34268210
1 changed files with 3 additions and 1 deletions
  1. +3
    -1
      ia-cdx-search

+ 3
- 1
ia-cdx-search View File

@@ -5,6 +5,7 @@ import http.client
import json
import re
import shlex
import socket
import sys
import time

@@ -35,7 +36,8 @@ def fetch(url, tries, connection):
print(f'Read {len(data)} bytes from {url}', file = sys.stderr)
o = json.loads(data)
break
except (RuntimeError, TimeoutError, http.client.HTTPException, json.JSONDecodeError) as e:
except (RuntimeError, TimeoutError, socket.timeout, http.client.HTTPException, json.JSONDecodeError) as e:
# socket.timeout is an alias of TimeoutError from Python 3.10 but still needs to be caught explicitly for older versions
print(f'Error retrieving {url}: {type(e).__module__}.{type(e).__name__} {e!s}', file = sys.stderr)
connection.close()
connection = make_connection()


Loading…
Cancel
Save