This commit is contained in:
27942
2026-02-26 20:55:59 +08:00
parent 136668147b
commit 3aab3ff071
6 changed files with 52 additions and 3728 deletions

View File

@@ -72,21 +72,23 @@ def _is_frozen() -> bool:
return getattr(sys, "frozen", False)
def _get_worker_launcher() -> tuple[str, str]:
def _get_worker_launcher() -> tuple[str, str, bool]:
"""返回 (可执行路径, 工作目录, 是否用 --worker 模式)。"""
if _is_frozen():
exe_dir = os.path.dirname(sys.executable)
worker_exe = os.path.join(exe_dir, "worker.exe")
if os.path.isfile(worker_exe):
return worker_exe, exe_dir
return sys.executable, exe_dir, True
project_root = get_project_root()
return sys.executable, project_root
return sys.executable, project_root, False
def run_worker(server_url: str, worker_id: str, worker_name: str, log_callback) -> subprocess.Popen | None:
"""启动 Worker 子进程。"""
launcher, cwd = _get_worker_launcher()
is_python = launcher == sys.executable
if is_python:
"""启动 Worker 子进程(同一 exe 的 --worker 模式或 python -m worker.main"""
launcher, cwd, use_worker_flag = _get_worker_launcher()
if use_worker_flag:
cmd = [launcher, "--worker", "--server", server_url, "--worker-id", worker_id, "--worker-name", worker_name]
env = os.environ
encoding = "gbk" if sys.platform == "win32" else "utf-8"
else:
cmd = [
launcher, "-m", "worker.main",
"--server", server_url,
@@ -95,11 +97,6 @@ def run_worker(server_url: str, worker_id: str, worker_name: str, log_callback)
]
env = {**os.environ, "PYTHONIOENCODING": "utf-8"}
encoding = "utf-8"
else:
cmd = [launcher, "--server", server_url, "--worker-id", worker_id, "--worker-name", worker_name]
env = os.environ
# worker.exe 在 Windows 上可能用 GBK 输出
encoding = "gbk" if sys.platform == "win32" else "utf-8"
try:
return subprocess.Popen(
cmd, cwd=cwd, env=env,