Fix of the notification subscription

This commit is contained in:
2026-07-29 11:43:18 +02:00
parent a49ed98ed7
commit bc86dc4a0d
4 changed files with 24 additions and 13 deletions
+15 -8
View File
@@ -308,8 +308,8 @@ def _send_fcm_notification(subscription, payload):
def _send_web_push_notification(subscription, payload):
try:
from pywebpush import webpush
from pywebpush import webpush, WebPushException
webpush(
subscription_info={
'endpoint': subscription['Endpoint'],
@@ -319,18 +319,25 @@ def _send_web_push_notification(subscription, payload):
vapid_private_key=VAPID_PRIVATE_KEY,
vapid_claims={'sub': VAPID_SUBJECT},
timeout=10,
ttl=3600
ttl=3600
)
return True
except ImportError:
logger.warning('pywebpush not installed. pip install pywebpush')
return False
except Exception as e:
logger.error(f'Web push error: {e}')
return False
# HÄRTUNG: Spezifische WebPush-Fehler abfangen
except WebPushException as ex:
# HTTP 404 (Not Found) oder 410 (Gone) bedeuten: Abo existiert nicht mehr
if ex.response is not None and ex.response.status_code in [404, 410]:
logger.info(f"Subscription expired or revoked (Code {ex.response.status_code}). Marking inactive.")
return False # False signalisiert der übergeordneten Funktion, das Abo zu deaktivieren
logger.error(f'Web push failed with code {ex.response.status_code if ex.response else "Unknown"}: {ex}')
return False
except Exception as e:
logger.error(f'Unexpected Web push error: {e}')
return False
def _mark_subscription_inactive(subscription_id):
try: