diff --git a/get_data_new.py b/get_data_new.py index 56bc0b0..4ba567c 100644 --- a/get_data_new.py +++ b/get_data_new.py @@ -164,8 +164,14 @@ def atomic_write_json(path: str, data: Any) -> None: # 1. Готовим данные заранее # ensure_ascii=False чтобы не терять юникод, indent=None чтобы не раздувать файл payload = json.dumps(data, ensure_ascii=False, separators=(",", ":")) - path = "static/" + path + ".json" - target = Path(path) + full_path = "static/" + path + ".json" + try: + with open(full_path, "r", encoding="utf-8") as f: + if f.read() == payload: + return # ничего не поменялось -> не пишем, не fsync'им + except FileNotFoundError: + pass + target = Path(full_path) tmp_fd, tmp_path = tempfile.mkstemp( dir=target.parent, prefix=target.name + ".tmp.", @@ -173,7 +179,7 @@ def atomic_write_json(path: str, data: Any) -> None: ) os.close(tmp_fd) # мы будем писать сами - lock = _select_lock(path) + lock = _select_lock(full_path) with lock: # 2a. Записываем полностью во временный файл with open(tmp_path, "w", encoding="utf-8") as f: @@ -736,7 +742,7 @@ def render_loop(stop_event: threading.Event, out_name: str = "game") -> None: except Exception as ex: logger.exception(f"[RENDER_THREAD] unexpected error: {ex}") - time.sleep(0.2) + time.sleep(1) logger.info("[RENDER_THREAD] stop render loop")