From 239d071464f48b8c2e09e43e1e9ced7d64a2a4c0 Mon Sep 17 00:00:00 2001 From: Jan Baykara Date: Tue, 17 Dec 2024 17:17:24 +0000 Subject: [PATCH] Handle postcodesIO fail --- hub/models.py | 10 +++++++--- hub/tests/test_external_data_source_parsers.py | 2 +- utils/postcodesIO.py | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/hub/models.py b/hub/models.py index ecafee33b..6112b6585 100644 --- a/hub/models.py +++ b/hub/models.py @@ -1811,9 +1811,13 @@ async def create_import_record(record): sample_point = area.polygon.centroid # get postcodeIO result for area.coordinates - postcode_data: PostcodesIOResult = await loaders[ - "postcodesIOFromPoint" - ].load(sample_point) + try: + postcode_data: PostcodesIOResult = await loaders[ + "postcodesIOFromPoint" + ].load(sample_point) + except Exception as e: + logger.error(f"Failed to get postcode data for {sample_point}: {e}") + postcode_data = None steps.append({ "task": "postcode_from_area_coordinates", "service": Geocoder.POSTCODES_IO.value, "result": "failed" if postcode_data is None else "success" }) diff --git a/hub/tests/test_external_data_source_parsers.py b/hub/tests/test_external_data_source_parsers.py index 28a26e40c..b0eda04f4 100644 --- a/hub/tests/test_external_data_source_parsers.py +++ b/hub/tests/test_external_data_source_parsers.py @@ -210,7 +210,7 @@ class TestMultiLevelGeocoding(TestCase): "ward": "Tre-garth a Mynydd Llandygái", "expected_area_type_code": "WD23", # TODO: actually a UTE "expected_area_gss": "W05000107", - } + }, # A bunch of wards with the same name, should all point to different things { "id": "11", diff --git a/utils/postcodesIO.py b/utils/postcodesIO.py index be7ec8d59..35ae0c33d 100644 --- a/utils/postcodesIO.py +++ b/utils/postcodesIO.py @@ -166,7 +166,7 @@ async def get_bulk_postcode_geo(postcodes) -> list[PostcodesIOResult]: @async_batch_and_aggregate(settings.POSTCODES_IO_BATCH_MAXIMUM) -async def get_bulk_postcode_geo_from_coords(coordinates: list[Point], radius=500): +async def get_bulk_postcode_geo_from_coords(coordinates: list[Point], radius=150): coords = [ { "longitude": coord.x,