コンテンツにスキップ

スクリプト開発 / 組み込み変数

スクリプトが実行時に実行状態に関する情報を取得しやすいように、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
関数ページ
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']