@
修复机场高频推送状态与主循环冲突:使用独立的状态文件 _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]:
|
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
|
path = _AIRPORT_PUSH_STATE_PATH
|
||||||
if not os.path.exists(path):
|
if not os.path.exists(path):
|
||||||
return {"last_by_city": {}}
|
return {"last_by_city": {}}
|
||||||
@@ -725,13 +719,6 @@ def _load_airport_state() -> Dict[str, Any]:
|
|||||||
|
|
||||||
|
|
||||||
def _save_airport_state(state: Dict[str, Any]) -> None:
|
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
|
path = _AIRPORT_PUSH_STATE_PATH
|
||||||
os.makedirs(os.path.dirname(path), exist_ok=True)
|
os.makedirs(os.path.dirname(path), exist_ok=True)
|
||||||
tmp = f"{path}.tmp"
|
tmp = f"{path}.tmp"
|
||||||
|
|||||||
Reference in New Issue
Block a user