检查作业生成#
在前一节,我们已经实现第一个任务 ( task1.takler 文件 )。 task1.takler 脚本需要经过预处理生成作业文件 (job file)。 这个过程由 Takler 服务在任务运行前自动完成。
可以在工作流运行前手动检查作业生成。
检查作业#
在工作流运行前可以检查作业生成过程,检查包括:
定位 takler 脚本文件,对应工作流定义中的每个任务 (
ShellScriptTask)。 本例中使用TAKLER_SCRIPT直接指定脚本路径。进行预处理
当工作流较复杂且包含许多 takler 脚本时,这种检查可以节省大量时间。
检查作业生成时需要注意以下几点:
作业检查 独立 于 Takler 服务,因此作业文件中的
TAKLER_HOST和TAKLER_PORT被替换为默认值 (localhost和33083)。作业文件扩展名是 .job。
默认情况下,作业文件在
TAKLER_HOME目录下生成。
使用 takler.tasks.shell.check_job_creation 函数完成检查。
更新 test.py
import sys
from pathlib import Path
from takler.core import Bunch, Flow
from takler.tasks.shell import ShellScriptTask, check_job_creation
from takler.visitor import pre_order_travel, PrintVisitor
TAKLER_HOME = Path(__file__).parent
def create_flow():
flow = Flow("test")
flow.add_parameter("TAKLER_HOME", TAKLER_HOME)
task1 = flow.add_task(ShellScriptTask("t1"))
task1.add_parameter("TAKLER_SCRIPT", Path(TAKLER_HOME, "test/task1.takler"))
return flow
if __name__ == "__main__":
flow = create_flow()
bunch = Bunch()
bunch.add_flow(flow)
pre_order_travel(flow, PrintVisitor(sys.stdout))
check_job_creation(flow)
运行脚本
python test.py
显示如下结果(注:删掉部分日志信息)
|- test [unknown]
|- t1 [unknown]
Job generation success: /g11/wangdp/project/course/takler/tutorial/test/t1.job
Render run command success: /g11/wangdp/project/course/takler/tutorial/test/t1.job 1> /g11/wangdp/project/course/takler/tutorial/test/t1.out 2>&1
check job creation results: 1 total, 1 success, 0 failed.
练习#
在
$TAKLER_HOME/test.py文件中增加作业创建检查。运行修改后的 test.py
检查生成的作业文件
$TAKLER_HOME/test/t1.job