跳轉至

腳本開發 / 內置變量

為了方便腳本在運行時獲取相關運行狀態的信息,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']