跳转至

脚本开发 / 连接器对象 DFF.CONN / DataFlux Func Sidecar

使用 Sidecar 连接器操作对象允许用户调用 Sidecar 执行 Shell 命令。

DFF.CONN(...) 参数如下:

参数 类型 必须 / 默认值 说明
connector_id str 必须 连接器 ID
timeout int/float 10 当前操作对象的默认 HTTP 请求超时时间,秒

Sidecar 手册

有关 Sidecar 的完整使用说明,请参考 Sidecar 手册

.shell(...)

执行调用 Sidecar 执行 Shell 命令,参数如下:

参数 类型 必须 / 默认值 说明
cmd str 必须 需要执行的 Shell 命令
如:"ls -l"
wait bool True 是否等待执行完成
设置为 False 时,本函数会立刻返回,并且不会返回终端输出
workdir str None Shell 命令执行的工作目录
如:"/home/dev"
envs dict None 环境变量,键和值都为字符串
如:{"MY_NAME": "Tom"}
callback_url str None 回调地址,命令执行后,将 stdoutstderr 使用 POST 方式发送至指定 URL
一般和 wait=False 参数一起使用,实现异步回调
timeout int/float None 本次请求超时时间
注意:本参数并不是 Shell 命令的超时时间,而是 Func 请求 Sidecar 的超时时间
省略时使用操作对象的默认值,即 10

本方法返回 (status_code, result)status_code 为 Sidecar 的 HTTP 响应状态码,result 为解析后的响应内容。HTTP 状态码大于等于 400 时抛出异常。

.call(...)

向 Sidecar 发送带连接器签名的 HTTP 请求,参数如下:

参数 类型 必须 / 默认值 说明
method str 必须 HTTP 请求方法;也可写为 "GET /path"
path str None / 开头的请求路径;省略时从 method 中拆分
query dict None URL 查询参数
body - None 请求体;非字符串值会先序列化为 JSON
timeout int/float None 本次请求超时时间,省略时使用操作对象的默认值

返回值与 .shell(...) 相同。

执行后回调

调用 SidecarHelper.shell(...) 并指定 callback_url 参数后,Sidecar 会在执行完 Shell 命令后将标准输出 stdout 和标准错误 stderr 以 POST 方式发送至此地址。

具体结构如下:

Text Only
1
2
3
4
5
6
7
8
9
POST {callback_url}
Content-Type: application/json

{
  "kwargs": {
    "stdout": "<标准输出文本>",
    "stderr": "<标准错误文本>"
  }
}

此结构与 DataFlux Func 的「函数 API」 标准 POST 方式 匹配,可直接使用「函数 API」接收执行后的回调