推送频率改为按数据源原生速率:AMOS 1分钟,其余 10分钟

不再统一 2 分钟,各城市按实际数据刷新周期独立推送:
首尔/釜山 60s,东京/安卡拉/赫尔辛基/阿姆斯特丹 600s。
循环轮询间隔降至 60s 以匹配最快频率。

Constraint: 循环每 60s 跑一轮,但 interval 判断让各城市按自有节奏推送
Tested: pytest 176 passed, ruff check 通过
This commit is contained in:
2569718930@qq.com
2026-05-12 20:13:15 +08:00
parent 5d630bb910
commit 4d584f4828
2 changed files with 13 additions and 4 deletions
+1 -1
View File
@@ -186,7 +186,7 @@ class StartupCoordinator:
def _start_airport_high_freq_loop(self) -> LoopStatus:
enabled = _env_bool("TELEGRAM_AIRPORT_PUSH_ENABLED", True)
chat_ids = get_telegram_chat_ids_from_env()
interval = max(30, _env_int("TELEGRAM_AIRPORT_PUSH_INTERVAL_SEC", 120))
interval = max(30, _env_int("TELEGRAM_AIRPORT_PUSH_INTERVAL_SEC", 60))
details = {
"mode": "airport-periodic",
"interval_sec": interval,
+12 -3
View File
@@ -752,7 +752,15 @@ def _build_airport_status_message(
return "\n".join(lines)
_AIRPORT_PUSH_INTERVAL_SEC = 120
# Per-city push interval matching native data refresh rate (seconds)
_AIRPORT_PUSH_INTERVAL = {
"seoul": 60, # AMOS 1-min
"busan": 60, # AMOS 1-min
"tokyo": 600, # JMA 10-min
"ankara": 600, # MGM ~10-min
"helsinki": 600, # FMI 10-min
"amsterdam": 600, # KNMI 10-min
}
_DEB_PROXIMITY_THRESHOLD_C = 3.0
@@ -770,7 +778,8 @@ def _run_high_freq_airport_cycle(
try:
last_city = last_by_city.get(city) or {}
last_city_ts = int(last_city.get("ts") or 0)
if now_ts - last_city_ts < _AIRPORT_PUSH_INTERVAL_SEC:
city_interval = _AIRPORT_PUSH_INTERVAL.get(city, 600)
if now_ts - last_city_ts < city_interval:
continue
city_weather: Dict[str, Any] = {}
@@ -851,7 +860,7 @@ def start_high_freq_airport_push_loop(bot: Any, config: Dict[str, Any]) -> Optio
logger.warning("airport high-freq push loop skipped: TELEGRAM_CHAT_IDS is not set")
return None
interval_sec = max(30, _env_int("TELEGRAM_AIRPORT_PUSH_INTERVAL_SEC", _AIRPORT_PUSH_INTERVAL_SEC))
interval_sec = max(30, _env_int("TELEGRAM_AIRPORT_PUSH_INTERVAL_SEC", 60))
def _runner() -> None:
state = _load_airport_state()