跳转至

脚本开发 / 内置变量 _DFF_XXX

为了方便脚本在运行时获取相关运行状态的信息,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_CRONTAB str 自动触发配置 Crontab 表达式 * * * * *
_DFF_HTTP_REQUEST dict 授权链接、批处理 接口调用时请求体 见下文

_DFF_START_TIME 和 _DFF_TRIGGER_TIME 区别

_DFF_START_TIME指的是函数实际启动的时间,相当于在函数入口处执行的int(time.time()),会因为队列拥堵等因素延后。

_DFF_TRIGGER_TIME指的是函数触发时间,不会因为队列拥堵而改变,可以认为是「计划启动的时间」,取值如下:

函数调用方式 取值
UI 执行函数 后端 API 服务接收到 HTTP 请求的时间
授权链接 后端 API 服务接收到 HTTP 请求的时间
自动触发配置 Crontab 表达式所对应的整点时间
批处理 后端 API 服务接收到 HTTP 请求的时间

当使用自动触发配置按照固定时间间隔获取时序数据时,应当以 _DFF_TRIGGER_TIME 和 _DFF_TRIGGER_TIME_MS 为基准,不要自行在代码中使用 time.time() 获取当前时间

_DFF_HTTP_REQUEST 数据结构

_DFF_HTTP_REQUEST内容为请求体详情。

如有一下请求:

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

那么,_DFF_HTTP_REQUEST值如下:

JSON
 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/auln-xxxxx/simplified?x=y",
    "url"        : "/api/v1/al/auln-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']