fix(fetcher): handle token timeout gracefully

This commit is contained in:
咕谷酱
2025-11-25 11:08:51 +08:00
parent 7b34bd8b0b
commit db430db01b
2 changed files with 68 additions and 31 deletions

View File

@@ -3,10 +3,13 @@ from typing import Annotated
from app.config import settings
from app.dependencies.database import get_redis
from app.fetcher import Fetcher as OriginFetcher
from app.fetcher._base import TokenAuthError
from app.log import fetcher_logger
from fastapi import Depends
fetcher: OriginFetcher | None = None
logger = fetcher_logger("FetcherDependency")
async def get_fetcher() -> OriginFetcher:
@@ -24,7 +27,14 @@ async def get_fetcher() -> OriginFetcher:
if access_token:
fetcher.access_token = str(access_token)
# Always ensure the access token is valid, regardless of initial state
await fetcher.ensure_valid_access_token()
try:
await fetcher.ensure_valid_access_token()
except TokenAuthError as exc:
logger.warning(
f"Failed to refresh fetcher access token during startup: {exc}. Will retry on demand."
)
except Exception as exc: # noqa: BLE001
logger.exception("Unexpected error while initializing fetcher access token", exc_info=exc)
return fetcher