检查作业#
在前一节中,我们看到一个任务脚本如何被转换为作业文件。
如果我们直接手动运行作业文件,运行会出错
$TAKLER_HOME/test/t1.job
出错信息类似:
+ takler_client init --host localhost --port 33083 --task-id 132970 --node-path /test/t1
localhost:33083 init /test/t1 with 132970
2022/06/30 08:53:50 could not init: rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing dial tcp 127.0.0.1:33083: connect: connection refused"
原因是作业脚本中集成的 takler_client 命令无法与服务 Takler 通讯。
默认端口 TAKLER_HOST 由任务脚本生成,因为当前主机上没有启动 Takler 服务,所以 takler_client 命令因无法连接服务而报错。
无论作业是如何生成的,即通过 Python 脚本或 Takler 服务,我们需要一种独立于 Takler 服务的检查作业方法。
可以通过设置环境变量 NO_TAKLER 来完成。
export NO_TAKLER=1
$TAKLER_HOME/test/t1.job
部分输出如下:
+ wait
+ takler_client complete --host localhost --port 33083 --node-path /test/t1
ignore because NO_TAKLER is set.
+ trap 0
+ exit 0
设置 NO_ECF 时,takler_client 程序立即返回,返回值为 0(即成功)。
这使您可以独立于 Takler 来检查您的脚本和作业。
练习#
export NO_TAKLER=1运行作业脚本
$TAKLER_HOME/test/t1.job