From da4995bb3e3f3f2610d1c4617b394da970ba721d Mon Sep 17 00:00:00 2001 From: Floke Date: Fri, 17 Apr 2026 21:59:24 +0000 Subject: [PATCH] =?UTF-8?q?[34588f42]=20Fix:=20Robuste=20Zeitzonen-Handhab?= =?UTF-8?q?ung=20(Europe/Berlin)=20f=C3=BCr=20Scheduling?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Hardcodierter UTC+2 Offset durch ZoneInfo('Europe/Berlin') ersetzt, um automatische Sommer-/Winterzeit-Umstellung sicherzustellen. --- fotograf-de-scraper/backend/publish_request_api.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/fotograf-de-scraper/backend/publish_request_api.py b/fotograf-de-scraper/backend/publish_request_api.py index 1c5257b0b..989a03768 100644 --- a/fotograf-de-scraper/backend/publish_request_api.py +++ b/fotograf-de-scraper/backend/publish_request_api.py @@ -10,9 +10,14 @@ import time import asyncio from typing import List, Dict, Optional +from zoneinfo import ZoneInfo + router = APIRouter(prefix="/api/publish-request", tags=["publish-request"]) logger = logging.getLogger("publish-request") +# Timezone for Berlin +TZ_BERLIN = ZoneInfo("Europe/Berlin") + # Official Project Signature SIGNATURE_HTML = """

@@ -44,8 +49,8 @@ class SendReleaseRequest(BaseModel): async def delayed_send(emails: List[Dict[str, str]], scheduled_time: str, db_session_factory): try: - # Calculate delay - now = datetime.datetime.now(datetime.timezone(datetime.timedelta(hours=2))) # Berlin Time Approx + # Calculate delay using Berlin Timezone + now = datetime.datetime.now(TZ_BERLIN) target_h, target_m = map(int, scheduled_time.split(":")) target_time = now.replace(hour=target_h, minute=target_m, second=0, microsecond=0) @@ -53,7 +58,7 @@ async def delayed_send(emails: List[Dict[str, str]], scheduled_time: str, db_ses target_time += datetime.timedelta(days=1) delay_seconds = (target_time - now).total_seconds() - logger.info(f"Scheduling {len(emails)} emails for {scheduled_time} (in {delay_seconds} seconds)") + logger.info(f"Scheduling {len(emails)} emails for {scheduled_time} Berlin Time (in {delay_seconds} seconds)") await asyncio.sleep(delay_seconds)