Files
ewoooc/services/pchome_growth_cache_state.py
OoO 3c0e558fbe
All checks were successful
CD Pipeline / deploy (push) Successful in 1m3s
V10.622 refresh growth cache after offer sync
2026-06-16 11:49:06 +08:00

38 lines
1.1 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Shared cache invalidation marker for the PChome growth opportunity API."""
from __future__ import annotations
import time
from pathlib import Path
_BASE_DIR = Path(__file__).resolve().parents[1]
_CACHE_MARKER_FILE = _BASE_DIR / "data" / "pchome_growth_cache_epoch.txt"
_MEMORY_EPOCH = 0.0
def get_pchome_growth_cache_epoch() -> float:
"""Return the newest known invalidation epoch across workers."""
global _MEMORY_EPOCH
try:
raw = _CACHE_MARKER_FILE.read_text(encoding="utf-8").strip()
file_epoch = float(raw or 0)
except (OSError, ValueError):
file_epoch = 0.0
_MEMORY_EPOCH = max(_MEMORY_EPOCH, file_epoch)
return _MEMORY_EPOCH
def mark_pchome_growth_cache_stale() -> float:
"""Invalidate cached PChome growth opportunities in every worker."""
global _MEMORY_EPOCH
epoch = time.time()
_MEMORY_EPOCH = max(_MEMORY_EPOCH, epoch)
try:
_CACHE_MARKER_FILE.parent.mkdir(parents=True, exist_ok=True)
_CACHE_MARKER_FILE.write_text(f"{epoch:.6f}", encoding="utf-8")
except OSError:
pass
return _MEMORY_EPOCH