Lewati ke isi

Pengembangan Skrip / Variabel Bawaan

Untuk memudahkan Skrip memperoleh informasi status operasional terkait saat runtime, DataFlux Func secara langsung menyediakan beberapa variabel yang dapat digunakan langsung di dalam konteks Skrip.

Variabel Bawaan Tipe Lingkup Penerapan Keterangan Contoh Nilai
_DFF_IMAGE_INFO dict Semua Informasi image saat ini Lihat di bawah
_DFF_TRACE_ID str Semua Trace ID
Trace internal Func
"TRACE-14E6D8D6-1F1A-4A5A-8280-854F6DD8CDB0"
_DFF_TASK_ID str Semua ID tugas "task-2UHeFYPdb6Q7"
_DFF_ROOT_TASK_ID str Semua ID tugas utama
Untuk tugas utama itu sendiri, selalu "ROOT
"task-2UHeFYPdb6Q7"
_DFF_SCRIPT_SET_ID str Semua ID Kumpulan Skrip "demo"
_DFF_SCRIPT_SET_NAME str Semua Nama Kumpulan Skrip
Sama dengan _DFF_SCRIPT_SET_ID
"demo"
_DFF_SCRIPT_SET_TITLE str Semua Judul Kumpulan Skrip "Contoh"
_DFF_SCRIPT_ID str Semua ID Skrip "demo__basic"
_DFF_SCRIPT_NAME str Semua Nama Skrip
yaitu bagian tanpa ID Kumpulan Skrip
"basic"
_DFF_SCRIPT_TITLE str Semua Judul Skrip "Dasar"
_DFF_FUNC_ID str Semua ID fungsi "demo__basic.hello_world"
_DFF_FUNC_NAME str Semua Nama fungsi
yaitu bagian tanpa ID Skrip
"hello_world"
_DFF_FUNC_TITLE str Semua Judul fungsi "Fungsi Saya"
_DFF_FUNC_CHAIN list Semua Rantai pemanggilan fungsi [ "demo__basic.run", "demo__basic.hello_world" ]
_DFF_FUNC_CALL_KWARGS dict Semua Parameter pemanggilan fungsi {"x": 1, "y": 2}
_DFF_ORIGIN str Semua Asal tugas "funcAPI"
_DFF_ORIGIN_ID str Semua ID asal "fapi-tDGC12Gdc5H6"
_DFF_TRIGGER_TIME int Semua Waktu mulai terjadwal (detik) 1625651909
_DFF_TRIGGER_TIME_MS int Semua Waktu mulai terjadwal (milidetik) 1625651909582
_DFF_START_TIME int Semua Waktu mulai aktual (detik) 1625651910
_DFF_START_TIME_MS int Semua Waktu mulai aktual (milidetik) 1625651910630
_DFF_QUEUE int Semua Antrian eksekusi 2
_DFF_CRON_EXPR str Tugas Terjadwal Ekspresi Crontab * * * * *
_DFF_HTTP_REQUEST dict API Fungsi
Halaman fungsi
Body permintaan saat pemanggilan API Lihat di bawah

Perbedaan antara _DFF_TRIGGER_TIME dan _DFF_START_TIME

_DFF_START_TIME mengacu pada waktu saat fungsi benar-benar dimulai, setara dengan int(time.time()) yang dijalankan di titik masuk fungsi, dan dapat tertunda karena faktor seperti kemacetan antrian.

Sedangkan _DFF_TRIGGER_TIME mengacu pada waktu pemicuan fungsi, yang tidak berubah karena kemacetan antrian, dan dapat dianggap sebagai "waktu mulai terjadwal", dengan nilai sebagai berikut:

Cara pemanggilan fungsi Nilai
Eksekusi fungsi melalui UI Waktu layanan API backend menerima permintaan HTTP
API Fungsi Waktu layanan API backend menerima permintaan HTTP
Tugas Terjadwal Waktu tepat yang sesuai dengan ekspresi Crontab

Saat menggunakan Tugas Terjadwal untuk mengambil data deret waktu pada interval waktu tetap, Anda harus menggunakan _DFF_TRIGGER_TIME dan _DFF_TRIGGER_TIME_MS sebagai acuan, jangan gunakan time.time() sendiri di dalam kode untuk Dapatkan waktu saat ini

Struktur Data _DFF_IMAGE_INFO

_DFF_IMAGE_INFO berisi informasi image DataFlux Func, termasuk nomor versi dan informasi lainnya.

Field Deskripsi
EDITION Edisi, nilainya: "original", "GSE", "TSE"
VERSION Nomor versi, contoh: "1.2.3"
ARCHITECTURE Arsitektur, nilainya: "x86_64", "aarch64"
RELEASE_TIMESTAMP Waktu rilis (timestamp UNIX, detik)
Contoh Isi _DFF_IMAGE_INFO
1
2
3
4
5
6
{
  "EDITION"          : "GSE",
  "VERSION"          : "7.3.6",
  "ARCHITECTURE"     : "x86_64",
  "RELEASE_TIMESTAMP": 1761298748
}

Struktur Data _DFF_HTTP_REQUEST

_DFF_HTTP_REQUEST berisi detail body permintaan.

Jika ada permintaan sebagai berikut:

Contoh Permintaan
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

Maka, nilai _DFF_HTTP_REQUEST adalah sebagai berikut:

Contoh Isi _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
}

Field yang terkandung dalam _DFF_HTTP_REQUEST pada versi DataFlux Func yang berbeda mungkin sedikit berbeda, harap mengacu pada yang sebenarnya

Tipe field headers adalah data bertipe IgnoreCaseDict. IgnoreCaseDict mewarisi dict, penggunaannya pada dasarnya sama tetapi tidak membedakan huruf besar/kecil pada nama kunci, seperti beberapa baris kode berikut semuanya dapat diperoleh nilai yang sama

Python
1
2
3
_DFF_HTTP_REQUEST['headers']['user-agent']
_DFF_HTTP_REQUEST['headers']['User-Agent']
_DFF_HTTP_REQUEST['headers']['USER-AGENT']