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_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_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_DEFAULT_TIMEOUT_SECONDS=14400
|
||||||
IDL_WORKER_MAX_TIMEOUT_SECONDS=43200
|
IDL_WORKER_MAX_TIMEOUT_SECONDS=43200
|
||||||
IDL_JOB_MAX_ATTEMPTS=1
|
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_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
|
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}"
|
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]:
|
def _read_env_pairs(env_path: str) -> dict[str, str]:
|
||||||
env_map: dict[str, str] = {}
|
env_map: dict[str, str] = {}
|
||||||
if not os.path.isfile(env_path):
|
if not os.path.isfile(env_path):
|
||||||
@@ -256,11 +288,10 @@ class Settings(BaseSettings):
|
|||||||
"ORBIT_QUARANTINE_DIR",
|
"ORBIT_QUARANTINE_DIR",
|
||||||
os.path.join(self.MONITOR_ORBIT_DIR, "_quarantine"),
|
os.path.join(self.MONITOR_ORBIT_DIR, "_quarantine"),
|
||||||
)
|
)
|
||||||
if not self.IDL_WORKER_RUNTIME_DIR:
|
|
||||||
object.__setattr__(
|
object.__setattr__(
|
||||||
self,
|
self,
|
||||||
"IDL_WORKER_RUNTIME_DIR",
|
"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:
|
if not self.RESULT_PUBLISH_ROOT:
|
||||||
object.__setattr__(
|
object.__setattr__(
|
||||||
@@ -395,6 +426,7 @@ class Settings(BaseSettings):
|
|||||||
os.makedirs(Settings.RADAR_RAW_CACHE_DIR, exist_ok=True)
|
os.makedirs(Settings.RADAR_RAW_CACHE_DIR, exist_ok=True)
|
||||||
os.makedirs(Settings.RADAR_GEO_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.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.RESULT_PUBLISH_ROOT, exist_ok=True)
|
||||||
os.makedirs(settings.DINSAR_PRODUCT_DIR, exist_ok=True)
|
os.makedirs(settings.DINSAR_PRODUCT_DIR, exist_ok=True)
|
||||||
os.makedirs(settings.PSINSAR_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 / ENVI 路径与 worker 管理目录
|
||||||
IDL_EXECUTABLE=C:\Program Files\Harris\ENVI56\IDL88\bin\bin.x86_64\idl.exe
|
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_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_SOURCE_DIR=<项目根目录>\IDL\origin
|
||||||
IDL_WORKER_SCRIPT_DIR=Z:\Code\Insar_management_system_v2\IDL\worker_managed
|
IDL_WORKER_SCRIPT_DIR=<项目根目录>\IDL\worker_managed
|
||||||
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
|
IDL_WORKER_DEFAULT_TIMEOUT_SECONDS=14400
|
||||||
IDL_WORKER_MAX_TIMEOUT_SECONDS=43200
|
IDL_WORKER_MAX_TIMEOUT_SECONDS=43200
|
||||||
IDL_WORKER_TEMP_DIRECTORY=D:\Sarscape_IDL_Area
|
IDL_WORKER_TEMP_DIRECTORY=D:\Sarscape_IDL_Area
|
||||||
|
|||||||
Reference in New Issue
Block a user