Skip to content

스크립트 개발 / 내장 변수

스크립트가 실행 중에 관련 실행 상태 정보를 편리하게 얻을 수 있도록, 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']