全部产品
Search
文档中心

Function Compute:Ikhtisar

更新时间:Jul 02, 2025

Topik ini menjelaskan informasi latar belakang tentang pemanggilan asinkron dan skenario penggunaannya. Topik ini juga mencakup cara menunda pemanggilan suatu fungsi.

Latar Belakang

Ketika Function Compute menerima permintaan pemanggilan asinkron, respons langsung dikembalikan setelah permintaan disimpan secara permanen, tanpa menunggu eksekusi selesai. Function Compute memastikan bahwa permintaan dieksekusi setidaknya satu kali. Untuk mendapatkan hasil dari pemanggilan asinkron, Anda dapat mengonfigurasi layanan tujuan. Informasi lebih lanjut dapat ditemukan di Panggilan balik hasil. Jika Anda ingin melacak status setiap tahap permintaan asinkron, aktifkan mode tugas. Lihat Ikhtisar untuk detail lebih lanjut.

Skenario

Jika fungsi Anda mencakup logika yang memakan waktu, memerlukan sumber daya besar, atau rentan terhadap kesalahan, pemanggilan asinkron dapat membantu program merespons lonjakan lalu lintas secara lebih efisien dan andal. Berikut adalah contoh skenario:

  • Dalam sistem pendaftaran pengguna, setelah pengguna baru menyelesaikan pendaftaran, notifikasi email dapat dikirim secara asinkron, terpisah dari proses pendaftaran.

  • Saat mengunggah file, tindakan seperti konversi format atau impor/ekspor dapat diproses secara asinkron, terpisah dari proses unggah data.

Catatan

Fungsi HTTP mendukung pemanggilan sinkron dan asinkron. Untuk informasi lebih lanjut, lihat Metode pemanggilan.

Pemanggilan tertunda

Dalam beberapa skenario, Anda mungkin ingin agar Function Compute menunda eksekusi fungsi setelah Anda mengirimkan permintaan pemanggilan asinkron. Dalam hal ini, Anda dapat menggunakan API Function Compute atau SDK untuk menunda eksekusi fungsi.

Tambahkan header permintaan HTTP x-fc-async-delay ke kode Anda. Nilai valid: [0,3600]. Satuan: detik. Function Compute akan memanggil fungsi setelah periode yang ditentukan oleh x-fc-async-delay berakhir.

Contoh berikut menunjukkan cara menggunakan SDK Function Compute untuk Go dalam menunda eksekusi fungsi:

package main

import (
    "fmt"
    "os"
    "github.com/aliyun/fc-go-sdk"
)
func main() {
      /*
        Pasangan AccessKey akun Alibaba Cloud memiliki izin untuk semua Operasi API. Menggunakan kredensial ini untuk melakukan operasi di Function Compute adalah operasi berisiko tinggi. Kami merekomendasikan Anda menggunakan pengguna RAM untuk memanggil Operasi API atau melakukan O&M rutin.
        Kami merekomendasikan Anda untuk tidak menyimpan ID AccessKey dan Rahasia AccessKey di kode proyek Anda. Jika tidak, pasangan AccessKey mungkin bocor dan keamanan semua sumber daya di akun Anda mungkin terganggu.
        Dalam contoh ini, pasangan AccessKey disimpan dalam variabel lingkungan untuk otentikasi.
        Konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID ALIBABA_CLOUD_ACCESS_KEY_SECRET di lingkungan lokal Anda sebelum menjalankan kode sampel.
        Di runtime Function Compute, variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET secara otomatis dikonfigurasi setelah 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)
    }

    // panggil fungsi dengan penundaan
    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)
    }
}
Penting

Pemanggilan tertunda menggunakan metode di atas mungkin tidak akurat dalam beberapa situasi. Untuk eksekusi tertunda yang lebih presisi, gunakan Pemicu waktu. Lihat Pemicu waktu untuk informasi lebih lanjut.

Fitur umum

Berikut adalah topik yang menjelaskan fitur umum dari pemanggilan asinkron: