68 lines
1.9 KiB
Python
68 lines
1.9 KiB
Python
"""启动前清空状态: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()
|