|
@@ -24,8 +24,10 @@ from app.services.cache import (
|
|
|
wait_cache_ready,
|
|
wait_cache_ready,
|
|
|
)
|
|
)
|
|
|
from app.services.redis_client import (
|
|
from app.services.redis_client import (
|
|
|
|
|
+ KEY_CACHE_DATA,
|
|
|
KEY_LOCK_LEADER,
|
|
KEY_LOCK_LEADER,
|
|
|
close_redis,
|
|
close_redis,
|
|
|
|
|
+ get_redis,
|
|
|
release_lock,
|
|
release_lock,
|
|
|
)
|
|
)
|
|
|
|
|
|
|
@@ -43,8 +45,20 @@ async def lifespan(app: FastAPI) -> AsyncIterator[None]:
|
|
|
tasks: list[asyncio.Task[None]] = []
|
|
tasks: list[asyncio.Task[None]] = []
|
|
|
|
|
|
|
|
if is_leader:
|
|
if is_leader:
|
|
|
- logger.info("[%s] 当选 leader,开始首次刷新", WORKER_ID)
|
|
|
|
|
- await refresh_cache()
|
|
|
|
|
|
|
+ # Redis 已有缓存就跳过启动刷新;只让定时任务在配置时间触发
|
|
|
|
|
+ cache_exists = False
|
|
|
|
|
+ try:
|
|
|
|
|
+ r = await get_redis()
|
|
|
|
|
+ cache_exists = bool(await r.exists(KEY_CACHE_DATA))
|
|
|
|
|
+ except Exception as exc: # noqa: BLE001
|
|
|
|
|
+ logger.warning("[%s] 检查 Redis 缓存失败,将执行首次刷新: %s", WORKER_ID, exc)
|
|
|
|
|
+
|
|
|
|
|
+ if cache_exists:
|
|
|
|
|
+ logger.info("[%s] 当选 leader,Redis 已有缓存,跳过启动刷新", WORKER_ID)
|
|
|
|
|
+ else:
|
|
|
|
|
+ logger.info("[%s] 当选 leader,Redis 无缓存,执行首次刷新", WORKER_ID)
|
|
|
|
|
+ await refresh_cache()
|
|
|
|
|
+
|
|
|
tasks.append(
|
|
tasks.append(
|
|
|
asyncio.create_task(scheduler_loop(), name="faq-scheduler")
|
|
asyncio.create_task(scheduler_loop(), name="faq-scheduler")
|
|
|
)
|
|
)
|