Download workers/alert_cleanup.py from JohnAlbarkaIbrahim/SentimentScope: direct link, hf CLI and curl.
- Browser
- Download file 1.3 kB
-
https://huggingface.co/spaces/JohnAlbarkaIbrahim/SentimentScope/resolve/main/workers/alert_cleanup.py
- Command line
-
hf download hf://spaces/JohnAlbarkaIbrahim/SentimentScope/workers/alert_cleanup.py
-
curl -L -o alert_cleanup.py https://huggingface.co/spaces/JohnAlbarkaIbrahim/SentimentScope/resolve/main/workers/alert_cleanup.py
1.3 kB
| """Cleanup job: deletes unconfirmed subscriptions older than the expiry window.""" | |
| from datetime import datetime, timezone, timedelta | |
| from config import CONFIRMATION_EXPIRY_HOURS, SUPABASE_SERVICE_ROLE_KEY, SUPABASE_URL | |
| from services.observability import setup_logger | |
| logger = setup_logger(__name__) | |
| def _get_service_client(): | |
| """Lazy-import Supabase service client to avoid circular imports at module level.""" | |
| from supabase import create_client | |
| return create_client(SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY) | |
| async def cleanup_stale_subscriptions() -> int: | |
| """Delete pending subscriptions where created_at < now() - expiry window. | |
| Returns count of deleted subscriptions. | |
| """ | |
| client = _get_service_client() | |
| cutoff = (datetime.now(timezone.utc) - timedelta(hours=CONFIRMATION_EXPIRY_HOURS)).isoformat() | |
| try: | |
| result = ( | |
| client.table("alert_subscriptions") | |
| .delete() | |
| .eq("status", "pending") | |
| .lt("created_at", cutoff) | |
| .execute() | |
| ) | |
| count = len(result.data) if result.data else 0 | |
| logger.info(f"[cleanup] deleted {count} stale pending subscriptions") | |
| return count | |
| except Exception as exc: | |
| logger.error(f"[cleanup] failed: {exc}") | |
| return 0 | |