haha
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user