|
2 | 2 | import plistlib |
3 | 3 | import zipfile |
4 | 4 | import requests |
| 5 | +from requests.adapters import HTTPAdapter |
| 6 | +from urllib3.util.retry import Retry |
5 | 7 | import logging |
6 | 8 | import time |
7 | 9 | from config import API_BASE_URL, RUNNING_FROM_EXECUTABLE, CURRENT_OS, VERIFY, WORKER_ID_SOURCE,\ |
8 | | - UPLOAD_EXTRA_FILES, EXPECTED_NUMBER_OF_BLOCKS |
| 10 | + UPLOAD_EXTRA_FILES, EXPECTED_NUMBER_OF_BLOCKS, TASKGET_TRIES |
9 | 11 | from hashlib import blake2b |
10 | 12 | from io import BytesIO |
11 | 13 | from pathlib import Path |
|
17 | 19 | logging.basicConfig(level=logging.INFO, |
18 | 20 | format='%(asctime)s - %(levelname)s - %(message)s') |
19 | 21 |
|
20 | | - |
| 22 | +RETRY_STRATEGY = Retry( |
| 23 | + total=TASKGET_TRIES, # Maximum number of retries |
| 24 | + status=0, |
| 25 | + redirect=False, |
| 26 | + backoff_factor=0.2, # Factor for exponential backoff between retries |
| 27 | + allowed_methods=["GET"] # Methods for which to retry |
| 28 | +) |
21 | 29 | def get_blocks_to_run(worker_id: str, code: str | None = None) -> list[str] | dict[str, str]: |
22 | 30 | """ |
23 | 31 | Sends a GET request to retrieve the list of blocks that are yet to be run by the worker. |
@@ -45,7 +53,11 @@ def get_blocks_to_run(worker_id: str, code: str | None = None) -> list[str] | di |
45 | 53 | params = {'worker_id': worker_id, 'code':code} |
46 | 54 |
|
47 | 55 | try: |
48 | | - response = requests.get(url, params=params, verify=VERIFY) |
| 56 | + adapter = HTTPAdapter(max_retries=RETRY_STRATEGY) |
| 57 | + session = requests.Session() |
| 58 | + session.mount("http://", adapter) |
| 59 | + session.mount("https://", adapter) |
| 60 | + response = session.get(url, params=params, verify=VERIFY) |
49 | 61 | response.raise_for_status() # Raise an error for non-2xx status codes |
50 | 62 | tasks = response.json().get('blocks_to_run', []) |
51 | 63 | logging.info(f'Tasks to run: {tasks}') |
|
0 commit comments