Skip to content
Snippets Groups Projects
Commit 1ea8b24f authored by leufen1's avatar leufen1
Browse files

join module now uses a retry strategy, /close #296 on test success

parent e5a82238
Branches
Tags
6 merge requests!319add all changes of dev into release v1.4.0 branch,!318Resolve "release v1.4.0",!300include cnn class,!280Resolve "limit retries in join module",!271Resolve "create CNN model class",!259Draft: Resolve "WRF-Datahandler should inherit from SingleStationDatahandler"
Pipeline #64374 passed
...@@ -8,6 +8,8 @@ from typing import Iterator, Union, List, Dict ...@@ -8,6 +8,8 @@ from typing import Iterator, Union, List, Dict
import pandas as pd import pandas as pd
import requests import requests
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry
from mlair import helpers from mlair import helpers
from mlair.configuration.join_settings import join_settings from mlair.configuration.join_settings import join_settings
...@@ -129,13 +131,24 @@ def get_data(opts: Dict, headers: Dict) -> Union[Dict, List]: ...@@ -129,13 +131,24 @@ def get_data(opts: Dict, headers: Dict) -> Union[Dict, List]:
:return: requested data (either as list or dictionary) :return: requested data (either as list or dictionary)
""" """
url = create_url(**opts) url = create_url(**opts)
response = requests.get(url, headers=headers) response = retries_session().get(url, headers=headers)
if response.status_code == 200: if response.status_code == 200:
return response.json() return response.json()
else: else:
raise EmptyQueryResult(f"There was an error (STATUS {response.status_code}) for request {url}") raise EmptyQueryResult(f"There was an error (STATUS {response.status_code}) for request {url}")
def retries_session(max_retries=5):
retry_strategy = Retry(total=max_retries,
status_forcelist=[429, 500, 502, 503, 504],
method_whitelist=["HEAD", "GET", "OPTIONS"])
adapter = HTTPAdapter(max_retries=retry_strategy)
http = requests.Session()
http.mount("https://", adapter)
http.mount("http://", adapter)
return http
def load_series_information(station_name: List[str], station_type: str_or_none, network_name: str_or_none, def load_series_information(station_name: List[str], station_type: str_or_none, network_name: str_or_none,
join_url_base: str, headers: Dict, data_origin: Dict = None) -> [Dict, Dict]: join_url_base: str, headers: Dict, data_origin: Dict = None) -> [Dict, Dict]:
""" """
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment