跳轉至

腳本開發 / 內置變量

為了方便腳本在運行時獲取相關運行狀態的信息,DataFlux Func 在腳本上下文中直接內置了一些可以直接使用的變量。

內置變量 類型 適用範圍 説明 示例值
_DFF_IMAGE_INFO dict 全部 當前鏡像信息 見下文
_DFF_TRACE_ID str 全部 Trace ID
Func 內部的 Trace
"TRACE-14E6D8D6-1F1A-4A5A-8280-854F6DD8CDB0"
_DFF_TASK_ID str 全部 任務 ID "task-2UHeFYPdb6Q7"
_DFF_ROOT_TASK_ID str 全部 主任務 ID
對於主任務本身,固定為 "ROOT
"task-2UHeFYPdb6Q7"
_DFF_SCRIPT_SET_ID str 全部 腳本集 ID "demo"
_DFF_SCRIPT_SET_NAME str 全部 腳本集名稱
_DFF_SCRIPT_SET_ID 相同
"demo"
_DFF_SCRIPT_SET_TITLE str 全部 腳本集標題 "示例"
_DFF_SCRIPT_ID str 全部 腳本 ID "demo__basic"
_DFF_SCRIPT_NAME str 全部 腳本名稱
即不含腳本集 ID 的部分
"basic"
_DFF_SCRIPT_TITLE str 全部 腳本標題 "基礎"
_DFF_FUNC_ID str 全部 函數 ID "demo__basic.hello_world"
_DFF_FUNC_NAME str 全部 函數名
即不含腳本 ID 的部分
"hello_world"
_DFF_FUNC_TITLE str 全部 函數標題 "我的函數"
_DFF_FUNC_CHAIN list 全部 函數調用鏈 [ "demo__basic.run", "demo__basic.hello_world" ]
_DFF_FUNC_CALL_KWARGS dict 全部 函數調用參數 {"x": 1, "y": 2}
_DFF_ORIGIN str 全部 任務來源 "funcAPI"
_DFF_ORIGIN_ID str 全部 來源 ID "fapi-tDGC12Gdc5H6"
_DFF_TRIGGER_TIME int 全部 計劃啓動時間(秒) 1625651909
_DFF_TRIGGER_TIME_MS int 全部 計劃啓動時間(毫秒) 1625651909582
_DFF_START_TIME int 全部 實際啓動時間(秒) 1625651910
_DFF_START_TIME_MS int 全部 實際啓動時間(毫秒) 1625651910630
_DFF_QUEUE int 全部 執行隊列 2
_DFF_CRON_EXPR str 定時任務 Crontab 表達式 * * * * *
_DFF_HTTP_REQUEST dict 函數 API
函數頁面
接口調用時請求體 見下文

_DFF_TRIGGER_TIME_DFF_START_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_IMAGE_INFO 數據結構

_DFF_IMAGE_INFO 內容為 DataFlux Func 鏡像信息,包含了版本號等信息。

字段 説明
EDITION 版本,取值為 "original", "GSE", "TSE"
VERSION 版本號,如:"1.2.3"
ARCHITECTURE 架構,取值為 "x86_64", "aarch64"
RELEASE_TIMESTAMP 發佈時間(UNIX 時間戳,秒)
_DFF_IMAGE_INFO 內容示例
1
2
3
4
5
6
{
  "EDITION"          : "GSE",
  "VERSION"          : "7.3.6",
  "ARCHITECTURE"     : "x86_64",
  "RELEASE_TIMESTAMP": 1761298748
}

_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/s?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/s?x=y",
    "url"        : "/api/v1/al/func-api-xxxxx/s",
    "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']