Files
FishServer/fish_api/app/prestart_fresh.py
zaiun xu e1b514836e frp
2026-04-09 15:21:21 +08:00

68 lines
1.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""启动前清空状态SQLite、watch 旧 JSON、测量/行为运行时目录。
由 start.sh / start_fresh.sh 在 uvicorn 之前调用,使 FishMeasure 与 FishAction 均在无缓存下重新推理。
"""
from __future__ import annotations
from pathlib import Path
from app.db import clear_runtime_compute_dirs, remove_sqlite_database_files
from app.settings import get_settings
def _rm_legacy_json(path: Path | None) -> None:
if path is None:
return
try:
if path.is_file():
path.unlink()
print(f"[prestart-fresh] removed legacy JSON {path}", flush=True)
except OSError as e:
print(f"[prestart-fresh] skip {path}: {e}", flush=True)
def run_prestart_fresh() -> None:
s = get_settings()
remove_sqlite_database_files(s)
print(
f"[prestart-fresh] removed SQLite at {s.sqlite_path} (and -wal/-shm if present).",
flush=True,
)
clear_runtime_compute_dirs(s)
print(
"[prestart-fresh] cleared compute dirs: "
f"measure_output={s.measure_output_root}, "
f"action_output={s.action_output_root}, "
f"media={s.media_root}, stream_tmp={s.stream_tmp_dir}",
flush=True,
)
if s.measure_watch_use_state_file:
if s.measure_watch_state_file is not None:
_rm_legacy_json(s.measure_watch_state_file)
elif s.measure_watch_dir is not None:
_rm_legacy_json(
s.measure_watch_dir / ".fishmeasure_watch_processed.json"
)
if s.action_watch_use_state_file:
if s.action_watch_state_file is not None:
_rm_legacy_json(s.action_watch_state_file)
elif s.action_watch_dir is not None:
_rm_legacy_json(
s.action_watch_dir / ".fishaction_watch_processed.json"
)
print("[prestart-fresh] done.", flush=True)
def main() -> None:
run_prestart_fresh()
if __name__ == "__main__":
main()