fix: 移除 RuntimeInstanceLock 锁文件机制

This commit is contained in:
3030332422
2026-04-14 17:59:29 +08:00
parent d5b883817c
commit 4225f1525f
@@ -1,63 +1,13 @@
import os
import threading
from pathlib import Path
if os.name == "nt":
import msvcrt
else:
import fcntl
from wakeword_runtime.config import load_config, setup_logging
from wakeword_runtime.runtime import TestRuntimeApplication, TestRuntimeHttpServer
class RuntimeInstanceLock:
def __init__(self, lock_path: Path) -> None:
self.lock_path = lock_path
self._handle = None
def acquire(self) -> bool:
self.lock_path.parent.mkdir(parents=True, exist_ok=True)
self._handle = open(self.lock_path, "a+b")
try:
if os.name == "nt":
self._handle.seek(0)
msvcrt.locking(self._handle.fileno(), msvcrt.LK_NBLCK, 1)
else:
fcntl.flock(self._handle.fileno(), fcntl.LOCK_EX | fcntl.LOCK_NB)
self._handle.seek(0)
self._handle.truncate()
self._handle.write(str(os.getpid()).encode("ascii"))
self._handle.flush()
return True
except OSError:
self.release()
return False
def release(self) -> None:
if self._handle is None:
return
try:
if os.name == "nt":
self._handle.seek(0)
msvcrt.locking(self._handle.fileno(), msvcrt.LK_UNLCK, 1)
else:
fcntl.flock(self._handle.fileno(), fcntl.LOCK_UN)
except OSError:
pass
finally:
self._handle.close()
self._handle = None
def main() -> int:
test_root = Path(__file__).resolve().parent
runtime_root = test_root / "wakeword_runtime"
lock = RuntimeInstanceLock(runtime_root / ".runtime.lock")
if not lock.acquire():
print("failed to start test runtime: another test runtime instance is already running")
print("请先关闭已有的 test runtime 进程,再重新启动。")
return 1
config = load_config(runtime_root)
setup_logging(config.log_file, config.log_level)
@@ -94,7 +44,6 @@ def main() -> int:
with app_lock:
app.shutdown()
http_server.shutdown()
lock.release()
return 0