Improvements and notebooks
This commit is contained in:
parent
84f8456fff
commit
f6b0ba5754
34 changed files with 2668 additions and 1373 deletions
|
|
@ -3,17 +3,13 @@ import time
|
|||
from urllib.error import URLError
|
||||
from urllib.request import Request, urlopen
|
||||
|
||||
RETRY_DELAYS = (3, 10)
|
||||
|
||||
|
||||
def urlopen_with_retry(req: Request, timeout: int = 30):
|
||||
"""urlopen wrapper that retries transient network failures."""
|
||||
last_err: Exception | None = None
|
||||
for attempt in range(len(RETRY_DELAYS) + 1):
|
||||
"""urlopen wrapper that retries transient network failures (3s, 10s backoff)."""
|
||||
for delay in (3, 10, None):
|
||||
try:
|
||||
return urlopen(req, timeout=timeout)
|
||||
except (URLError, TimeoutError) as e:
|
||||
last_err = e
|
||||
if attempt < len(RETRY_DELAYS):
|
||||
time.sleep(RETRY_DELAYS[attempt])
|
||||
raise last_err
|
||||
except (URLError, TimeoutError):
|
||||
if delay is None:
|
||||
raise
|
||||
time.sleep(delay)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue