Pengembangan Skrip / Fungsi Ekspor DFF.API
DFF.API(...) mengembalikan dekorator untuk mengekspos fungsi tingkat atas yang didekorasi ke publik, memungkinkan pemanggilan melalui Func API, Tugas Terjadwal, MCP, halaman fungsi, atau eksekusi debug.
Hanya fungsi entry yang perlu dipanggil dari luar impor Python biasa yang harus menggunakan @DFF.API(...); fungsi pembantu privat tidak perlu menambahkan dekorator ini.
Dalam Script yang sama, nama fungsi yang didekorasi harus unik; nama yang sama akan menyebabkan Script gagal dimuat.
Daftar parameter terperinci adalah sebagai berikut:
| Parameter | Tipe | Wajib / Nilai Default | Deskripsi |
|---|---|---|---|
title |
str | None |
Nama tampilan ekspor fungsi, terutama untuk ditampilkan di antarmuka |
require_api_auth |
bool | False |
Memerlukan API Auth ketika Func diekspos melalui Func API |
category |
str | "general" |
Kategori fungsi, default "general". Terutama digunakan untuk klasifikasi/penyaringan daftar fungsi |
tags |
list | None |
Daftar tag fungsi, terutama digunakan untuk klasifikasi/penyaringan daftar fungsi |
tags[#] |
str | Wajib | Tag fungsi |
timeout |
int / referensi dinamis | None |
Waktu tunggu fungsi. Satuan: detik, rentang nilai 1 ~ 3600 |
expires |
int / referensi dinamis | None |
Durasi tunggu antrean maksimum. Satuan: detik, rentang nilai 1 ~ 86400 |
cache_result |
int | None |
Durasi penyimpanan hasil cache. Satuan: detik, gunakan bilangan bulat positif, None atau 0 berarti tidak cache |
queue |
int / referensi dinamis | None |
Nomor antrean Worker pengguna |
fixed_cron_expr |
str(Cron-format) | None |
Memaksa penggunaan ekspresi Cron lima-bagian yang ditentukan ketika fungsi dijalankan oleh Tugas Terjadwal |
fixed_delayed_cron_job |
int / list[int] | None |
Memaksa Tugas Terjadwal menggunakan jumlah detik penundaan eksekusi yang ditentukan |
delayed_cron_job |
int / list[int] / referensi dinamis | None |
Jumlah detik penundaan eksekusi default yang digunakan ketika Tugas Terjadwal tidak mengonfigurasi penundaan sendiri |
mcp_annotations |
dict | None |
Hint perilaku alat MCP standar serta ekstensi confirmationHint |
integration |
str | None |
Integrasi bawaan, opsional signIn atau autoRun |
auto_run |
dict | None |
Konfigurasi auto run, sekaligus mengatur integration='autoRun' |
is_hidden |
bool | False |
Sembunyikan dari hasil penemuan Func biasa |
custom |
Nilai yang dapat diserialisasi JSON | None |
Metadata kustom |
custom_json |
str(JSON) | None |
Metadata kustom yang dikodekan dengan teks JSON |
custom_yaml |
str(YAML) | None |
Metadata kustom yang dikodekan dengan teks YAML |
Penjelasan rinci setiap parameter dapat dilihat di bawah ini:
Parameter title
Judul fungsi memudahkan untuk ditampilkan di berbagai antarmuka operasi / dokumen DataFlux Func.
| Contoh | |
|---|---|
1 2 3 | |
Parameter require_api_auth
Ketika Func diekspos ke publik melalui Func API, require_api_auth=True dapat diatur untuk mewajibkan pemanggil melalui autentikasi API Auth.
| Contoh | |
|---|---|
1 2 3 | |
Setelah Func API dipublikasikan, pemanggil akan bergantung pada struktur input dan return fungsi, oleh karena itu keduanya harus dijaga tetap stabil.
Parameter category / tags
Kategori dan daftar tag dari fungsi itu sendiri tidak ikut serta dan tidak mengontrol jalannya fungsi; terutama digunakan untuk memudahkan pengelolaan klasifikasi fungsi. Keduanya dapat digunakan bersamaan atau masing-masing secara terpisah.
Saat runtime, kategori dan tag masing-masing diekspos melalui _DFF_FUNC_CATEGORY dan _DFF_FUNC_TAGS. Keduanya hanya merupakan metadata deskriptif dan tidak dapat digunakan untuk membangun identitas atau batas izin.
| Contoh | |
|---|---|
1 2 3 | |
Setelah ditentukan, daftar fungsi dapat difilter dengan menentukan parameter penyaringan, misalnya:
| Contoh Permintaan HTTP | |
|---|---|
1 2 3 4 5 | |
Parameter timeout
Untuk melindungi sistem, semua fungsi yang berjalan di DataFlux Func memiliki batas durasi eksekusi dan tidak diizinkan berjalan tanpa batas. Jika timeout tidak dikonfigurasi, berbagai cara pemanggilan memiliki nilai default yang berbeda.
| Cara Pemanggilan | Nilai Default timeout |
|---|---|
| API Fungsi Sinkron | 35 |
| API Fungsi Asinkron | 3600 |
| Tugas Terjadwal | 35 |
| Contoh | |
|---|---|
1 2 3 | |
Untuk fungsi yang dieksekusi di editor DataFlux Func, sistem akan mengabaikan konfigurasi timeout dan menetapkannya menjadi 60 detik
Danger
Nilai maksimum yang dapat dikonfigurasi untuk timeout adalah 3600 detik (yaitu 1 jam), dengan tujuan melindungi sistem. Jika tanpa pertimbangan langsung mengatur waktu timeout semua fungsi ke nilai maksimum, Anda mungkin tidak dapat mengetahui masalah dalam penulisan dan desain kode secara tepat waktu, sekaligus menyebabkan masalah seperti kemacetan antrean.
Oleh karena itu, parameter timeout harus diatur berdasarkan kebutuhan aktual; banyak permintaan API Fungsi yang memakan waktu lama dapat menyebabkan kemacetan antrean tugas, dan jika perlu, gunakan teknik cache.
Warning
Respons antarmuka HTTP yang melebihi 3 detik dapat dianggap sangat lambat; perhatikan untuk tidak mengonfigurasi waktu timeout yang terlalu panjang tanpa makna bagi fungsi.
Selain itu, browser sendiri juga memiliki batasan waktu maksimum untuk permintaan (misalnya: Chrome 4 menit), sehingga mengatur timeout yang terlalu panjang di API Fungsi juga tidak ada artinya.
Parameter expires / queue
expires digunakan untuk membatasi waktu tunggu maksimum tugas dalam antrean, dengan rentang nilai 1 ~ 86400 detik. Setelah waktu tunggu terlampaui, tugas tidak akan mulai dieksekusi; ini berbeda dengan timeout yang membatasi durasi eksekusi sebenarnya.
queue digunakan untuk menentukan nomor antrean Worker pengguna. Nomor yang tersedia bergantung pada konfigurasi Worker DataFlux Func saat ini.
Parameter cache_result
DataFlux Func memiliki penanganan cache bawaan di tingkat API. Setelah parameter cache ditentukan, ketika fungsi dan parameter yang sama persis dipanggil, sistem akan langsung mengembalikan hasil yang di-cache.
cache_result hanya boleh menggunakan bilangan bulat positif dalam detik; jika None atau 0 diberikan, cache tidak diaktifkan.
| Contoh | |
|---|---|
1 2 3 | |
Setelah cache cocok, API akan langsung mengembalikan hasil, sedangkan fungsi tidak benar-benar dieksekusi
Setelah cache cocok, header permintaan HTTP yang dikembalikan akan menambahkan penanda berikut:
| Text Only | |
|---|---|
1 | |
Parameter fixed_cron_expr
Untuk beberapa fungsi yang akan digunakan untuk Tugas Terjadwal, penulis fungsi mungkin memiliki persyaratan mengenai frekuensi berjalan otomatis. Dalam hal ini, parameter ini dapat ditentukan untuk mengunci Tugas Terjadwal milik fungsi tersebut ke ekspresi Cron lima segmen yang ditentukan. Parameter ini hanya boleh digunakan jika frekuensi penjadwalan harus dikontrol oleh Script; jika tidak, seharusnya dikontrol oleh konfigurasi Tugas Terjadwal.
| Contoh | |
|---|---|
1 2 3 | |
Parameter fixed_delayed_cron_job / delayed_cron_job
Untuk beberapa fungsi yang digunakan untuk Tugas Terjadwal, penulis fungsi mungkin ingin menjalankannya pada waktu yang lebih presisi (misalnya, berjalan dengan penundaan 10 detik dari basis * * * * *).
fixed_delayed_cron_job akan menimpa penundaan yang dikonfigurasi oleh Tugas Terjadwal itu sendiri; delayed_cron_job hanya menjadi nilai default jika Tugas Terjadwal tidak mengonfigurasi penundaan. Keduanya dapat menerima satu angka detik atau array angka detik; jika array diberikan, fungsi akan berjalan setelah mencapai setiap penundaan yang ditentukan.
Eksekusi tertunda hanya menjamin fungsi tidak berjalan lebih awal dari waktu yang ditentukan, dan tidak menjamin fungsi segera berjalan setelah mencapai waktu yang ditentukan
Parameter ini tidak berlaku untuk kasus 'adanya Tugas Terjadwal berdurasi panjang', baik tugas berdurasi panjang tersebut terkait dengan eksekusi tertunda atau tidak
| Contoh | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
Referensi Dinamis
delayed_cron_job, timeout, expires, dan queue mendukung penggunaan referensi dinamis yang dikembalikan oleh metode berikut:
DFF.ENV.ref(key, default=None)DFF.STORE.ref(key, scope=None, default=None)DFF.CACHE.ref(key, scope=None, default=None)
DFF.STORE.ref(...) dan DFF.CACHE.ref(...) menggunakan REF saat scope dihilangkan. Referensi dinamis diselesaikan saat metadata Func dikonsumsi; jika hasil penyelesaian tidak valid, referensi tersebut akan diabaikan dan tidak mengubah deklarasi dekorator.
| Contoh | |
|---|---|
1 2 3 4 5 6 7 | |
Parameter mcp_annotations
Ketika Func diekspos langsung sebagai alat MCP, perilaku alat dapat dideklarasikan melalui mcp_annotations. MCP2 list-func dan MCP3 search-func juga akan mengembalikan Hint standar yang terkandung di dalamnya melalui metadata annotations.
| Hint | Tipe | Keterangan |
|---|---|---|
readOnlyHint |
bool | Alat tidak akan mengubah lingkungan |
destructiveHint |
bool | Alat yang memodifikasi lingkungan dapat menyebabkan perubahan destruktif |
idempotentHint |
bool | Pemanggilan berulang dengan parameter yang sama tidak menimbulkan efek tambahan |
openWorldHint |
bool | Alat dapat berinteraksi dengan entitas eksternal |
confirmationHint |
bool / str | Ekstensi DataFlux Func yang mengharuskan Agent memperoleh konfirmasi pengguna sebelum pemanggilan |
Nilai dari keempat Hint standar harus berupa boolean. Hanya Hint standar yang secara eksplisit diberikan yang akan ditulis ke annotations; kamus kosong tidak akan menghasilkan annotations.
confirmationHint tidak akan ditulis ke annotations standar MCP. Jika True diberikan, teks petunjuk default berikut akan langsung ditambahkan pada baris berikutnya setelah deskripsi Func, tanpa baris kosong di antaranya:
| Text Only | |
|---|---|
1 | |
Jika False diberikan, tidak ada konten yang ditambahkan; jika string diberikan, string tersebut akan ditambahkan apa adanya pada baris berikutnya sebagai pengganti petunjuk default. Ini hanyalah instruksi untuk Agent, bukan kontrol konfirmasi atau otorisasi yang ditegakkan oleh server.
| Contoh | |
|---|---|
1 2 3 4 5 6 7 8 9 10 | |
Parameter integration / auto_run / is_hidden
integration digunakan untuk mendeklarasikan integrasi bawaan, dengan nilai yang mungkin adalah signIn atau autoRun. Parameter ini hanya boleh diatur jika perilaku integrasi yang sesuai benar-benar diperlukan.
integration='signIn'
signIn adalah titik masuk login tingkat instalasi. Saat runtime, username dan password akan diteruskan ke Func; mengembalikan nilai falsy atau kosong akan menolak login, mengembalikan True akan menggunakan nama pengguna sebagai identitas eksternal, mengembalikan string atau angka akan menggunakan nilai tersebut sebagai identitas eksternal, dan saat mengembalikan kamus juga dapat menyediakan identitas, nama tampilan, dan informasi email.
Danger
Setelah login berhasil, saat ini akan membuat atau memperbarui pengguna lokal dengan peran administrator, sehingga Func ini termasuk dalam batas kepercayaan administrator. Fungsi ini hanya boleh bertanggung jawab untuk autentikasi; tidak boleh mencatat, menyimpan, mengembalikan, atau mencetak kredensial yang diteruskan, pesan kegagalan juga tidak boleh memuat isi kredensial, dan hanya boleh mengembalikan informasi pengguna minimum yang diperlukan untuk autentikasi.
Kredensial login juga termasuk parameter Func, dan dapat disimpan dalam catatan tugas atau data pemantauan mandiri tergantung pada pengaturan instalasi. Sebelum mengaktifkan integrasi login, periksa pengaturan terkait terlebih dahulu.
Parameter auto_run
auto_run digunakan untuk mengonfigurasi titik masuk auto-run, sekaligus mengatur integration='autoRun'. Mendukung nama kunci standar berikut:
| Nama Kunci | Keterangan |
|---|---|
cronExpr |
Dipicu berdasarkan ekspresi Cron |
onSystemLaunch |
Dipicu saat sistem dimulai |
onScriptPublish |
Dipicu setelah Script diterbitkan |
Pemicu ini tidak menyediakan parameter Func, oleh karena itu titik masuk auto-run tidak boleh memerlukan parameter posisi atau parameter kata kunci. onScriptPublish hanya akan dijalankan setelah sinkronisasi data Script yang telah dipublikasikan selesai, dan akan mengeksekusi kode yang baru dipublikasikan; jika sinkronisasi gagal, auto-run akan dilewati.
| Contoh | |
|---|---|
1 2 3 | |
Parameter is_hidden
Menetapkan is_hidden=True dapat menyembunyikan Func dari hasil penemuan Func biasa. Parameter ini hanya boleh digunakan jika memang perlu menyembunyikan titik masuk.
Parameter custom / custom_json / custom_yaml
Ketiga parameter ini digunakan untuk mengatur metadata khusus: custom menerima nilai yang dapat diserialisasi ke JSON, custom_json menerima teks JSON, dan custom_yaml menerima teks YAML. Hanya salah satu dari parameter ini yang harus diberikan dalam satu waktu.