stocra.synchronous.error_handlers

 1from time import sleep
 2
 3from requests import HTTPError, Timeout
 4
 5from stocra.models import StocraHTTPError
 6from stocra.utils import calculate_sleep
 7
 8
 9def retry_on_service_unavailable(error: StocraHTTPError) -> bool:
10    if not isinstance(error.exception, HTTPError):
11        return False
12
13    if error.exception.response.status_code != 503:
14        return False
15
16    if error.iteration > 10:
17        return False
18
19    sleep(calculate_sleep(error.iteration))
20    return True
21
22
23def retry_on_too_many_requests(error: StocraHTTPError) -> bool:
24    if not isinstance(error.exception, HTTPError):
25        return False
26
27    if error.exception.response.status_code != 429:
28        return False
29
30    if error.iteration > 10:
31        return False
32
33    sleep(int(error.exception.response.headers["Retry-After"]))
34    return True
35
36
37def retry_on_bad_gateway(error: StocraHTTPError) -> bool:
38    if not isinstance(error.exception, HTTPError):
39        return False
40
41    if error.exception.response.status_code != 502:
42        return False
43
44    if error.iteration > 10:
45        return False
46
47    sleep(calculate_sleep(error.iteration))
48    return True
49
50
51def retry_on_timeout_error(error: StocraHTTPError) -> bool:
52    if not isinstance(error.exception, Timeout):
53        return False
54
55    if error.iteration > 10:
56        return False
57
58    sleep(calculate_sleep(error.iteration))
59    return True
def retry_on_service_unavailable(error: stocra.models.StocraHTTPError) -> bool:
10def retry_on_service_unavailable(error: StocraHTTPError) -> bool:
11    if not isinstance(error.exception, HTTPError):
12        return False
13
14    if error.exception.response.status_code != 503:
15        return False
16
17    if error.iteration > 10:
18        return False
19
20    sleep(calculate_sleep(error.iteration))
21    return True
def retry_on_too_many_requests(error: stocra.models.StocraHTTPError) -> bool:
24def retry_on_too_many_requests(error: StocraHTTPError) -> bool:
25    if not isinstance(error.exception, HTTPError):
26        return False
27
28    if error.exception.response.status_code != 429:
29        return False
30
31    if error.iteration > 10:
32        return False
33
34    sleep(int(error.exception.response.headers["Retry-After"]))
35    return True
def retry_on_bad_gateway(error: stocra.models.StocraHTTPError) -> bool:
38def retry_on_bad_gateway(error: StocraHTTPError) -> bool:
39    if not isinstance(error.exception, HTTPError):
40        return False
41
42    if error.exception.response.status_code != 502:
43        return False
44
45    if error.iteration > 10:
46        return False
47
48    sleep(calculate_sleep(error.iteration))
49    return True
def retry_on_timeout_error(error: stocra.models.StocraHTTPError) -> bool:
52def retry_on_timeout_error(error: StocraHTTPError) -> bool:
53    if not isinstance(error.exception, Timeout):
54        return False
55
56    if error.iteration > 10:
57        return False
58
59    sleep(calculate_sleep(error.iteration))
60    return True