From 296d0cd2403932aea39f22653d8818af0c2dc376 Mon Sep 17 00:00:00 2001 From: Will Freeman Date: Thu, 2 Oct 2025 10:03:04 -0600 Subject: [PATCH] update timeout in overpass query --- serverless/alpr_counts/src/alpr_counts.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/serverless/alpr_counts/src/alpr_counts.py b/serverless/alpr_counts/src/alpr_counts.py index ec75605..08a7752 100644 --- a/serverless/alpr_counts/src/alpr_counts.py +++ b/serverless/alpr_counts/src/alpr_counts.py @@ -5,7 +5,7 @@ import boto3 def fetch_alpr_surveillance_nodes(usOnly=False): overpass_url = "http://overpass-api.de/api/interpreter" overpass_query = f""" - [out:json]; + [out:json][timeout:180]; {'area["ISO3166-1"="US"]->.searchArea;' if usOnly else ''} node["man_made"="surveillance"]["surveillance:type"="ALPR"]{f'(area.searchArea)' if usOnly else ''}; out count; @@ -18,13 +18,19 @@ def fetch_alpr_surveillance_nodes(usOnly=False): try: return response_json['elements'][0]['tags']['nodes'] except (IndexError, KeyError) as e: - return {"error": "Could not find 'elements[0].tags.nodes' in the response."} + raise RuntimeError("Could not find 'elements[0].tags.nodes' in the response.") else: - return {"error": f"Failed to fetch data from Overpass API. Status code: {response.status_code}"} + raise RuntimeError(f"Failed to fetch data from Overpass API. Status code: {response.status_code}") def lambda_handler(event, context): # us_alprs = fetch_alpr_surveillance_nodes('(area["ISO3166-1"="US"])') - worldwide_alprs = fetch_alpr_surveillance_nodes() + try: + worldwide_alprs = fetch_alpr_surveillance_nodes() + except Exception as e: + return { + 'statusCode': 500, + 'body': f"Failed to fetch ALPR counts: {str(e)}", + } all_alprs = { # 'us': us_alprs,