From 00b7a54a8f35dce855004aa3ce6a3f972c06ab7a Mon Sep 17 00:00:00 2001 From: rene Date: Fri, 8 May 2026 13:46:31 +0200 Subject: [PATCH] =?UTF-8?q?Fix:=20VDH-Scraper=20ReadTimeout=20=E2=80=94=20?= =?UTF-8?q?60s=20read-Timeout,=20besseres=20Exception-Logging?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/scraper/events_vdh.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/backend/scraper/events_vdh.py b/backend/scraper/events_vdh.py index 72313af..59729a5 100644 --- a/backend/scraper/events_vdh.py +++ b/backend/scraper/events_vdh.py @@ -185,7 +185,8 @@ async def fetch_vdh_events() -> list[dict]: raw_events: list[dict] = [] - async with httpx.AsyncClient(timeout=20, follow_redirects=True) as client: + timeout = httpx.Timeout(connect=15.0, read=60.0, write=10.0, pool=10.0) + async with httpx.AsyncClient(timeout=timeout, follow_redirects=True) as client: for url, parse_fn in sources: try: resp = await client.get(url, headers=headers) @@ -198,8 +199,10 @@ async def fetch_vdh_events() -> list[dict]: logger.info(f"VDH-Scraper: Keine Events auf {url}") except httpx.HTTPStatusError as e: logger.warning(f"VDH-Scraper HTTP-Fehler {e.response.status_code} für {url}: {e}") + except httpx.TimeoutException as e: + logger.warning(f"VDH-Scraper Timeout für {url}: {type(e).__name__}") except Exception as e: - logger.warning(f"VDH-Scraper Fehler für {url}: {e}") + logger.warning(f"VDH-Scraper Fehler für {url}: {type(e).__name__}: {e}") if not raw_events: logger.warning("VDH-Scraper: Keine Daten — verwende Fallback-Events.")