跳轉到

指令碼開發 / 聯結器物件 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 回撥地址,命令執行後,將 stdout 和 stderr 使用 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」接收執行後的回撥