|
|
@@ -27,12 +27,23 @@ def job_name_from_ini(ini_path: str) -> str:
|
|
|
return basename
|
|
|
|
|
|
|
|
|
-def json_output_path(base_dir: str, ini_path: str) -> str:
|
|
|
+def json_output_path(base_dir: str, ini_path: str,
|
|
|
+ start_date: str = None, stop_date: str = None) -> str:
|
|
|
"""
|
|
|
- 按 ini 推导 DataX json 作业配置的输出绝对路径。
|
|
|
- 扁平化:{base_dir}/conf/datax-json/{job_name}.json。
|
|
|
+ 按 ini + 日期区间推导 DataX json 作业配置的输出绝对路径。
|
|
|
+ 扁平化:{base_dir}/conf/datax-json/{job_name}_{start_date}_{stop_date}.json。
|
|
|
+
|
|
|
+ 日期后缀防同 ini 不同 [start, stop) 段并发跑时 json 互相覆盖(DS 同时触发
|
|
|
+ 多个 backfill / 手动 + 调度并发等场景)。同 ini 同 [start, stop) 并发仍冲突,
|
|
|
+ 属真正重复任务,按业务约定应让其中一个失败而非容忍。
|
|
|
+ 缺省 start_date/stop_date 时退回老格式(仅用于 cli gen-json 单文件查看 / 测试)。
|
|
|
"""
|
|
|
- return os.path.join(base_dir, 'conf', 'datax-json', job_name_from_ini(ini_path) + '.json')
|
|
|
+ job = job_name_from_ini(ini_path)
|
|
|
+ if start_date and stop_date:
|
|
|
+ suffix = '_{}_{}'.format(start_date, stop_date)
|
|
|
+ else:
|
|
|
+ suffix = ''
|
|
|
+ return os.path.join(base_dir, 'conf', 'datax-json', job + suffix + '.json')
|
|
|
|
|
|
|
|
|
def log_path(log_root_dir: str, module: str, dt: str, job_name: str) -> str:
|