跳转至

脚本开发 / 内置变量

为了方便脚本在运行时获取相关运行状态的信息,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']