流程控制接口
介绍
流程控制接口:提供任务脚本的子脚本调用、后台并发执行、任务暂停/恢复/终止等逻辑控制功能。
重要说明:以下函数由任务引擎在运行时自动注入到任务脚本的执行环境中,无需 import,直接调用即可。这些函数仅在通过
/sdk/execute_task执行的任务脚本中可用。
| 功能 | Python |
|---|---|
| 同步执行子脚本 | ✔ |
| 后台并发执行子脚本 | ✔ |
子脚本调用
Python接口
run_script(source, parameters=None)
功能说明
同步执行子脚本,阻塞直到子脚本执行完成。子脚本在父脚本命名空间的浅拷贝中运行,可访问所有预加载的 API,但子脚本的变量写入不影响父命名空间。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
source | str | 必填 | task_id 或相对于 $DAYSTAR_DATA_ROOT/scripts/ 的路径(无需 .py 后缀)。 |
parameters | dict | 默认: None | 注入子脚本命名空间的参数字典,子脚本通过 parameters["key"] 访问。 |
返回值
无返回值。异常时抛出 ScriptError(original_exc 属性含原始异常)或 FileNotFoundError。
调用示例
python
# 串行执行子脚本
run_script("patrol_task")
# 传递参数给子脚本
run_script("patrol_task", parameters={"zone": "A", "speed": 0.5})run_parallel_script(source, parameters=None)
功能说明
在后台 daemon 线程中异步执行子脚本,立即返回 ThreadHandle,不阻塞主脚本。后台线程受协作式 tracer 控制:主任务暂停时后台线程同步暂停;线程异常只记录到 stderr,不影响主脚本执行。
参数说明
| 参数名 | 类型 | 必填/默认值 | 说明 |
|---|---|---|---|
source | str | 必填 | task_id 或相对于 $DAYSTAR_DATA_ROOT/scripts/ 的路径(无需 .py 后缀)。 |
parameters | dict | 默认: None | 注入子脚本命名空间的参数字典。 |
返回值
| 类型 | 说明 |
|---|---|
ThreadHandle | 后台线程句柄。join(timeout) 等待完成;is_done() 检查是否结束;cancel() 发送取消信号。 |
调用示例
python
# 启动后台监控,主脚本继续执行
handle = run_parallel_script("monitor_battery")
navigation_to_location("PointA")
navigation_to_location("PointB")
handle.join() # 可选:等待监控线程结束