feat: auto-refresh calendar subscriptions
ci / gitleaks (push) Successful in 7s
ci / docker (push) Successful in 3m29s

This commit is contained in:
2026-09-21 15:36:09 +08:00
parent a970a03f5d
commit 97c1bd4e87
6 changed files with 257 additions and 42 deletions
+16 -2
View File
@@ -1,3 +1,4 @@
import asyncio
import base64
import json
import logging
@@ -30,8 +31,9 @@ from .auth import (
verify_password,
)
from .backup import router as backup_router
from .calendar_refresh import calendar_refresh_loop
from .calendar_router import router as calendar_router
from .db import create_schema, get_db
from .db import create_schema, get_db, get_session_factory
from .models import (
AppState,
Attachment,
@@ -80,7 +82,19 @@ async def lifespan(app: FastAPI):
if get_settings().auto_create_schema:
await create_schema()
yield
stop_calendar_refresh = asyncio.Event()
calendar_refresh_task = asyncio.create_task(
calendar_refresh_loop(get_session_factory(), stop_calendar_refresh)
)
try:
yield
finally:
stop_calendar_refresh.set()
calendar_refresh_task.cancel()
try:
await calendar_refresh_task
except asyncio.CancelledError:
pass
app = FastAPI(