Skip to content

Commit c3ab8d7

Browse files
committed
Handle ReliefWeb 410 Gone during prefetch
1 parent 2d148ef commit c3ab8d7

1 file changed

Lines changed: 30 additions & 6 deletions

File tree

databank/management/commands/sources/RELIEFWEB.py

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,30 @@ def parse_date(date):
2121
return datetime.datetime.strptime(date.split("T")[0], RELIEFWEB_DATETIME_FORMAT)
2222

2323

24+
def _post_reliefweb(query_params, url, context):
25+
try:
26+
response = requests.post(url, data=query_params)
27+
response.raise_for_status()
28+
return response.json()
29+
except requests.HTTPError as exc:
30+
status_code = exc.response.status_code if exc.response else None
31+
if status_code == 410:
32+
logger.warning(
33+
"ReliefWeb API returned 410 Gone for %s. Skipping %s prefetch. URL: %s",
34+
DISASTER_API,
35+
context,
36+
url,
37+
)
38+
return None
39+
raise
40+
except requests.RequestException:
41+
logger.exception("ReliefWeb API request failed for %s. URL: %s", context, url)
42+
raise
43+
except ValueError:
44+
logger.exception("ReliefWeb API returned invalid JSON for %s. URL: %s", context, url)
45+
raise
46+
47+
2448
def _crises_event_prefetch():
2549
query_params = json.dumps(
2650
{
@@ -42,9 +66,9 @@ def _crises_event_prefetch():
4266
url = DISASTER_API
4367
data = {}
4468
while True:
45-
response = requests.post(url, data=query_params)
46-
response.raise_for_status()
47-
response = response.json()
69+
response = _post_reliefweb(query_params, url, "crises_event")
70+
if response is None:
71+
return {}
4872

4973
for disaster in response["data"]:
5074
disaster = disaster["fields"]
@@ -90,9 +114,9 @@ def _epidemics_prefetch():
90114
url = DISASTER_API
91115
data = {}
92116
while True:
93-
response = requests.post(url, data=query_params)
94-
response.raise_for_status()
95-
response = response.json()
117+
response = _post_reliefweb(query_params, url, "epidemics")
118+
if response is None:
119+
return {}
96120

97121
for epidemic in response["data"]:
98122
epidemic = epidemic["fields"]

0 commit comments

Comments
 (0)