mirror of
https://ghfast.top/https://github.com/aeroxw/tick-stock-panel.git
synced 2026-09-12 15:34:16 +08:00
在设置里拖动「行情轮询间隔」的同时切换另一个开关(比如实时行情总开关),
刷新页面后那个开关又变回原样 —— 它被间隔的写盘整体覆盖掉了。
preferences.save 的 docstring 记着这个坑: "FastAPI 同步端点跑线程池,
并行 PUT 各自基于旧快照写盘会互相覆盖 (实测: 压缩总开关并行写分时/日K
两键, 后写者把先写者覆盖)", 所以它的 read-modify-write 整段在 _SAVE_LOCK
里。set_realtime_quote_interval 是唯一没跟上的 setter: 它自己 load() 拿快照,
再 _path().write_text() 全量写回, 全程不持锁。两个 PUT 在飞时, 后写的那份
旧快照会把先写的键抹掉。
改成 save({"realtime_quote_interval": interval}) —— 与本模块其余全部 setter
(set_sentiment_exclude_st / set_pipeline_pull_types / set_review_schedule ...)
一致, 返回值与缓存失效行为不变。