跳轉到

指令碼開發 / 內建變數

為了方便指令碼在執行時獲取相關執行狀態的資訊,DataFlux Func 在指令碼上下文中直接內建了一些可以直接使用的變數。

內建變數 型別 適用範圍 說明 示例值
_DFF_SCRIPT_SET_ID str 全部 指令碼集 ID "demo"
_DFF_SCRIPT_ID str 全部 指令碼 ID "demo__basic"
_DFF_FUNC_ID str 全部 函式 ID "demo__basic.hello_world"
_DFF_FUNC_NAME str 全部 函式名 "hello_world"
_DFF_START_TIME int 全部 實際啟動時間(秒) 1625651910
_DFF_START_TIME_MS int 全部 實際啟動時間(毫秒) 1625651910630
_DFF_TRIGGER_TIME int 全部 計劃啟動時間(秒) 1625651909
_DFF_TRIGGER_TIME_MS int 全部 計劃啟動時間(毫秒) 1625651909582
_DFF_CRON_EXPR str 定時任務 Crontab 表示式 * * * * *
_DFF_HTTP_REQUEST dict 函式 API 介面呼叫時請求體 見下文

_DFF_START_TIME_DFF_TRIGGER_TIME 區別

_DFF_START_TIME 指的是函式實際啟動的時間,相當於在函式入口處執行的 int(time.time()),會因為佇列擁堵等因素延後。

_DFF_TRIGGER_TIME 指的是函式觸發時間,不會因為佇列擁堵而改變,可以認為是「計劃啟動的時間」,取值如下:

函式呼叫方式 取值
UI 執行函式 後端 API 服務接收到 HTTP 請求的時間
函式 API 後端 API 服務接收到 HTTP 請求的時間
定時任務 Crontab 表示式所對應的整點時間

當使用「定時任務」按照固定時間間隔獲取時序資料時,應當以 _DFF_TRIGGER_TIME 和 _DFF_TRIGGER_TIME_MS 為基準,不要自行在程式碼中使用 time.time() 獲取當前時間

_DFF_HTTP_REQUEST 資料結構

_DFF_HTTP_REQUEST 內容為請求體詳情。

如有以下請求:

請求示例
1
2
3
4
5
curl \
    -X POST \
    -H "Content-Type: application/json" \
    -d '{"a":"b"}' \
    http://localhost:8088/api/v1/al/func-api-xxxxx/simplified?x=y

那麼,_DFF_HTTP_REQUEST 值如下:

_DFF_HTTP_REQUEST 內容示例
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
    "method"     : "POST",
    "originalUrl": "/api/v1/al/func-api-xxxxx/simplified?x=y",
    "url"        : "/api/v1/al/func-api-xxxxx/simplified",
    "host"       : "localhost:8088",
    "hostname"   : "localhost",
    "protocol"   : "http",
    "headers": {
        "host"          : "localhost:8088",
        "user-agent"    : "curl/7.68.0",
        "accept"        : "*/*",
        "content-type"  : "application/json",
        "content-length": "9"
    },
    "query": {
        "x": "y"
    },
    "body": {
        "a": "b"
    },
    "ip" : "127.0.0.1",
    "ips": [],
    "xhr": false
}

不同版本的 DataFlux Func 中 _DFF_HTTP_REQUEST 包含的欄位可能略有不同,請以實際為準

headers 欄位型別是 IgnoreCaseDict 型別資料。IgnoreCaseDict 繼承 dict,用法基本相同但不區分鍵名的大小寫,如以下幾行程式碼都能獲得相同的值

Python
1
2
3
_DFF_HTTP_REQUEST['headers']['user-agent']
_DFF_HTTP_REQUEST['headers']['User-Agent']
_DFF_HTTP_REQUEST['headers']['USER-AGENT']