All Products
Search
Document Center

Function Compute:Ikhtisar fitur

Last Updated:Apr 01, 2026

Pemanggilan sinkron memblokir pemanggil hingga fungsi selesai—suatu kendala ketika eksekusi berlangsung lama, intensif sumber daya, atau rentan error. Pemanggilan asinkron mengatasi masalah ini: Function Compute menyimpan permintaan, memberikan respons segera, lalu mengeksekusi fungsi dalam proses terpisah. Pemanggil tidak pernah diblokir, dan Function Compute menjamin permintaan dieksekusi setidaknya satu kali.

Untuk mendapatkan output dari pemanggilan asinkron, konfigurasikan layanan tujuan. Lihat Result callback.

Untuk melacak status setiap tahap permintaan asinkron, aktifkan task mode. Lihat Overview.

Fungsi HTTP mendukung pemanggilan sinkron maupun asinkron. Lihat Invocation methods.

Kapan menggunakan pemanggilan asinkron

Gunakan pemanggilan asinkron ketika:

  • Eksekusi fungsi memakan waktu lama dan pemanggil tidak dapat menunggu hasilnya.

  • Beban kerja bersifat intensif sumber daya atau rentan error, dan Anda ingin melepaskannya dari alur permintaan.

  • Pemanggil hanya memerlukan konfirmasi bahwa permintaan telah diterima, bukan output fungsi.

Contoh umum:

  • Notifikasi terlepas: Setelah pengguna mendaftar, kirim email konfirmasi secara asinkron alih-alih memblokir respons pendaftaran.

  • Pemrosesan file latar belakang: Setelah unggah file, jalankan konversi format atau impor data sebagai tugas latar belakang, terpisah dari alur unggah.

Menunda pemanggilan

Untuk menunda eksekusi fungsi setelah mengirimkan pemanggilan asinkron, gunakan API Function Compute atau SDK untuk menambahkan header permintaan HTTP x-fc-async-delay ke kode pemanggilan Anda.

ParameterNilai validUnitDeskripsi
x-fc-async-delay0–3600DetikPenundaan sebelum Function Compute memanggil fungsi

Contoh berikut menggunakan SDK Function Compute untuk Go untuk mengirimkan pemanggilan tertunda:

package main

import (
    "fmt"
    "os"
    "github.com/aliyun/fc-go-sdk"
)

func main() {
    // Gunakan kredensial RAM user untuk operasi API, bukan Akun Alibaba Cloud Anda.
    // Simpan kredensial dalam variabel lingkungan — jangan hardcode di proyek Anda.
    // Di waktu proses Function Compute, ALIBABA_CLOUD_ACCESS_KEY_ID dan
    // ALIBABA_CLOUD_ACCESS_KEY_SECRET diatur secara otomatis saat Anda mengonfigurasi izin eksekusi.
    fcClient, err := fc.NewClient(
        fmt.Sprintf("%s.cn-shanghai.fc.aliyuncs.com", os.Getenv("ACCOUNT_ID")),
        "2016-08-15",
        os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),
        os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
    )
    if err != nil {
        panic(err)
    }

    // Kirim pemanggilan asinkron dengan penundaan 200 detik.
    invokeInput := fc.NewInvokeFunctionInput(<ServiceName>, <FunctionName>).WithPayload(<payload>)
    invokeInput = invokeInput.WithAsyncInvocation().WithHeader("x-fc-async-delay", "200")
    _, err = fcClient.InvokeFunction(invokeInput)
    if err != nil {
        panic(err)
    }
}

Ganti placeholder berikut dengan nilai aktual:

PlaceholderDeskripsi
<ServiceName>Nama layanan Function Compute Anda
<FunctionName>Nama fungsi Anda
<payload>Data masukan untuk fungsi
Penting

Pemanggilan tertunda yang menggunakan x-fc-async-delay mungkin tidak akurat di semua skenario. Untuk eksekusi terjadwal yang tepat, gunakan pemicu waktu. Lihat Time triggers.

Langkah selanjutnya