@
修复机场高频推送状态与主循环冲突:使用独立的状态文件 _load_airport_state / _save_airport_state 在 SQLite 模式下错误地复用了 _telegram_state_repo,与市场监控主循环共享同一个状态存储, 导致两个循环互相覆盖对方的 last_by_city / last_snapshot_ts 等字段。 改为始终使用独立文件 data/airport_push_state.json 隔离状态。 Constraint: 机场状态与主循环状态必须物理隔离 Scope-risk: 低,仅影响新功能的状态持久化 Tested: ruff check 通过 @
This commit is contained in:
@@ -704,12 +704,6 @@ _AIRPORT_PUSH_STATE_PATH = os.path.join(
|
||||
|
||||
|
||||
def _load_airport_state() -> Dict[str, Any]:
|
||||
try:
|
||||
from src.database.runtime_state import STATE_STORAGE_SQLITE, get_state_storage_mode
|
||||
if get_state_storage_mode() == STATE_STORAGE_SQLITE:
|
||||
return _telegram_state_repo.load_state()
|
||||
except Exception:
|
||||
pass
|
||||
path = _AIRPORT_PUSH_STATE_PATH
|
||||
if not os.path.exists(path):
|
||||
return {"last_by_city": {}}
|
||||
@@ -725,13 +719,6 @@ def _load_airport_state() -> Dict[str, Any]:
|
||||
|
||||
|
||||
def _save_airport_state(state: Dict[str, Any]) -> None:
|
||||
try:
|
||||
from src.database.runtime_state import STATE_STORAGE_SQLITE, get_state_storage_mode
|
||||
if get_state_storage_mode() == STATE_STORAGE_SQLITE:
|
||||
_telegram_state_repo.save_state(state)
|
||||
return
|
||||
except Exception:
|
||||
pass
|
||||
path = _AIRPORT_PUSH_STATE_PATH
|
||||
os.makedirs(os.path.dirname(path), exist_ok=True)
|
||||
tmp = f"{path}.tmp"
|
||||
|
||||
Reference in New Issue
Block a user