Fix IDL runtime dir configuration handling
This commit is contained in:
+2
-1
@@ -88,7 +88,8 @@ ORBIT_POOL_LANDSAR=
|
||||
# -----------------------------------------------------------------------------
|
||||
IDL_EXECUTABLE=C:\Program Files\Harris\ENVI56\IDL88\bin\bin.x86_64\idl.exe
|
||||
IDL_WORKBENCH_PATH=C:\Program Files\Harris\ENVI56\IDL88\bin\bin.x86_64\idlde.exe
|
||||
IDL_WORKER_RUNTIME_DIR=Z:\Code\Insar_management_system_v2\backend\runtime\idl_worker
|
||||
# 留空则默认使用项目 backend/runtime/idl_worker
|
||||
IDL_WORKER_RUNTIME_DIR=
|
||||
IDL_WORKER_DEFAULT_TIMEOUT_SECONDS=14400
|
||||
IDL_WORKER_MAX_TIMEOUT_SECONDS=43200
|
||||
IDL_JOB_MAX_ATTEMPTS=1
|
||||
|
||||
@@ -178,7 +178,7 @@ IDL_WORKBENCH_PATH=C:\\Program Files\\Harris\\ENVI56\\IDL88\\bin\\bin.x86_64\\id
|
||||
IDL_DINSAR_DEM_BASE_FILE=D:\\SRTM30m\\SRTMDEM_RSP_SARscape
|
||||
|
||||
# 工作目录
|
||||
IDL_WORKER_RUNTIME_DIR=Z:\\Code\\Insar_management_system_v2\\backend\\runtime\\idl_worker
|
||||
IDL_WORKER_RUNTIME_DIR=<项目根目录>\\backend\\runtime\\idl_worker
|
||||
|
||||
# 超时配置
|
||||
IDL_WORKER_DEFAULT_TIMEOUT_SECONDS=14400
|
||||
|
||||
+34
-2
@@ -26,6 +26,38 @@ def _windows_path_to_wsl_mount(path: str) -> str:
|
||||
return f"/mnt/{drive_letter}/{normalized_tail}"
|
||||
|
||||
|
||||
def _clean_path_text(value: str | None) -> str:
|
||||
return str(value or "").strip().strip('"').strip("'")
|
||||
|
||||
|
||||
def _default_idl_runtime_dir() -> str:
|
||||
return os.path.join(_BACKEND_DIR, "runtime", "idl_worker")
|
||||
|
||||
|
||||
def _resolve_idl_runtime_dir(value: str | None) -> str:
|
||||
fallback_dir = os.path.normpath(_default_idl_runtime_dir())
|
||||
text = _clean_path_text(value)
|
||||
if not text:
|
||||
return fallback_dir
|
||||
|
||||
normalized = os.path.normpath(text)
|
||||
if normalized.startswith("\\\\"):
|
||||
return normalized
|
||||
|
||||
drive, _tail = os.path.splitdrive(normalized)
|
||||
if drive:
|
||||
drive_root = drive + os.sep
|
||||
if not os.path.exists(drive_root):
|
||||
print(
|
||||
">>> [Config] IDL_WORKER_RUNTIME_DIR root unavailable; "
|
||||
f"fallback to {fallback_dir} (configured: {normalized})"
|
||||
)
|
||||
return fallback_dir
|
||||
return normalized
|
||||
|
||||
return os.path.normpath(os.path.abspath(normalized))
|
||||
|
||||
|
||||
def _read_env_pairs(env_path: str) -> dict[str, str]:
|
||||
env_map: dict[str, str] = {}
|
||||
if not os.path.isfile(env_path):
|
||||
@@ -256,11 +288,10 @@ class Settings(BaseSettings):
|
||||
"ORBIT_QUARANTINE_DIR",
|
||||
os.path.join(self.MONITOR_ORBIT_DIR, "_quarantine"),
|
||||
)
|
||||
if not self.IDL_WORKER_RUNTIME_DIR:
|
||||
object.__setattr__(
|
||||
self,
|
||||
"IDL_WORKER_RUNTIME_DIR",
|
||||
os.path.join(backend_dir, "runtime", "idl_worker"),
|
||||
_resolve_idl_runtime_dir(self.IDL_WORKER_RUNTIME_DIR),
|
||||
)
|
||||
if not self.RESULT_PUBLISH_ROOT:
|
||||
object.__setattr__(
|
||||
@@ -395,6 +426,7 @@ class Settings(BaseSettings):
|
||||
os.makedirs(Settings.RADAR_RAW_CACHE_DIR, exist_ok=True)
|
||||
os.makedirs(Settings.RADAR_GEO_CACHE_DIR, exist_ok=True)
|
||||
os.makedirs(Settings.COLORMAPS_DIR, exist_ok=True)
|
||||
os.makedirs(settings.IDL_WORKER_RUNTIME_DIR, exist_ok=True)
|
||||
os.makedirs(settings.RESULT_PUBLISH_ROOT, exist_ok=True)
|
||||
os.makedirs(settings.DINSAR_PRODUCT_DIR, exist_ok=True)
|
||||
os.makedirs(settings.PSINSAR_PRODUCT_DIR, exist_ok=True)
|
||||
|
||||
+3
-3
@@ -276,9 +276,9 @@ NGINX_PATH=C:\nginx-1.29.4\nginx.exe
|
||||
# IDL / ENVI 路径与 worker 管理目录
|
||||
IDL_EXECUTABLE=C:\Program Files\Harris\ENVI56\IDL88\bin\bin.x86_64\idl.exe
|
||||
IDL_WORKBENCH_PATH=C:\Program Files\Harris\ENVI56\IDL88\bin\bin.x86_64\idlde.exe
|
||||
IDL_WORKER_SCRIPT_SOURCE_DIR=Z:\Code\Insar_management_system_v2\IDL\origin
|
||||
IDL_WORKER_SCRIPT_DIR=Z:\Code\Insar_management_system_v2\IDL\worker_managed
|
||||
IDL_WORKER_RUNTIME_DIR=Z:\Code\Insar_management_system_v2\backend\runtime\idl_worker
|
||||
IDL_WORKER_SCRIPT_SOURCE_DIR=<项目根目录>\IDL\origin
|
||||
IDL_WORKER_SCRIPT_DIR=<项目根目录>\IDL\worker_managed
|
||||
IDL_WORKER_RUNTIME_DIR=<项目根目录>\backend\runtime\idl_worker
|
||||
IDL_WORKER_DEFAULT_TIMEOUT_SECONDS=14400
|
||||
IDL_WORKER_MAX_TIMEOUT_SECONDS=43200
|
||||
IDL_WORKER_TEMP_DIRECTORY=D:\Sarscape_IDL_Area
|
||||
|
||||
Reference in New Issue
Block a user