全部产品
Search
文档中心

Function Compute:Kait siklus hidup instans fungsi

更新时间:Mar 25, 2026

Topik ini menjelaskan cara mengimplementasikan kait siklus hidup untuk instans fungsi dalam runtime kustom.

Latar Belakang

Setelah Anda mengimplementasikan dan mengonfigurasi kait siklus hidup untuk instans fungsi, Function Compute memanggil kait yang sesuai ketika event siklus hidup terkait terjadi. Siklus hidup instans fungsi mencakup kait Initializer dan PreStop. Untuk informasi selengkapnya, lihat Konfigurasi siklus hidup instans.

Kait siklus hidup ditagih berdasarkan aturan yang sama seperti permintaan pemanggilan biasa. Namun, log eksekusinya hanya dapat dilihat di Function Logs atau Advanced Logs. Log untuk kait siklus hidup tidak muncul dalam daftar Invocation Requests. Untuk informasi selengkapnya, lihat Lihat log kait siklus hidup instans.

Implementasikan kait siklus hidup

Function Compute memanggil panggilan balik yang sesuai ketika event siklus hidup instans terkait terjadi. Siklus hidup instans fungsi melibatkan panggilan balik Initializer dan PreStop.

Path

Request

Expected response

(Opsional) POST /initialize

Badan permintaan: Tidak ada.

Header permintaan: Termasuk header permintaan umum. Untuk informasi selengkapnya, lihat Header permintaan umum di Function Compute.

Badan respons: Nilai kembali dari kait Initializer.

StatusCode

  • 2xx: Berhasil.

  • Bukan 2xx: Gagal.

Catatan

Jika kait Initializer mengalami timeout atau gagal, server selalu mengembalikan kode status HTTP 200. Anda harus memeriksa header respons X-Fc-Error-Type:InitializationError atau bidang errorMessage dalam badan respons untuk mengidentifikasi kegagalan inisialisasi.

(Opsional) GET /pre-stop

Badan respons: Nilai kembali dari kait PreStop.

StatusCode

  • 2xx: Berhasil.

  • Bukan 2xx: Gagal.

Contoh berikut menggunakan runtime kustom Python 3.10 untuk menunjukkan cara mengimplementasikan kait siklus hidup.

import os
from flask import Flask
from flask import request

app = Flask(__name__)

@app.route('/initialize', methods=['POST'])
def init_invoke():
    rid = request.headers.get('x-fc-request-id')
    print("FC Initialize Start RequestId: " + rid)
    # lakukan hal-hal Anda
    print("FC Initialize End RequestId: " + rid)
    return "OK"

@app.route('/', defaults={'path': ''})
@app.route('/<path:path>', methods=['GET', 'POST', 'PUT', 'DELETE'])
def hello_world(path):
    rid = request.headers.get('x-fc-request-id')
    print("FC invoke Start RequestId: " + rid)
    # lakukan hal-hal Anda
    print("FC invoke End RequestId: " + rid)
    return "Hello, World!", 200, [('Function-Name', os.getenv('FC_FUNCTION_NAME'))]


@app.route('/pre-stop', methods=['GET'])
def prestop_invoke():
    rid = request.headers.get('x-fc-request-id')
    print("FC PreStop Start RequestId: " + rid)
    # lakukan hal-hal Anda
    print("FC PreStop End RequestId: " + rid)
    return "OK"


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=9000)

Selain jalur eksekusi yang berhasil, fungsi Anda mungkin mengalami error di Python. Contoh berikut menunjukkan skenario error untuk endpoint /initialize.

@app.route('/initialize', methods=['POST'])
def init():
    raise Exception("hahaha")
    return "OK", 200, []
@app.route('/initialize', methods=['POST'])
def init():
    return "OK", 404, []

Untuk menggunakan kait Initializer dalam runtime kustom, Anda harus mengimplementasikan logika di server HTTP Anda untuk path /initialize yang menerima permintaan POST. Untuk contoh kode, lihat entri initialize pada tabel di atas.

Penting

Jika Anda membuat fungsi tanpa mengatur Initializer, Anda tidak perlu mengimplementasikan /initialize. Dalam kasus ini, meskipun server HTTP mengimplementasikan /initialize, logika /initialize dalam kode tidak akan dipanggil dan dieksekusi.

Kait PreStop diimplementasikan dengan cara yang sama seperti kait Initializer.

Kode error

Kode error

Deskripsi

400

  • Jika kait Initializer gagal dan mengembalikan error 400 atau 404, Function Compute tidak mengirim ulang permintaan tersebut. Sebaliknya, Function Compute terus mencoba kait tersebut hingga berhasil.

  • Jika kait PreStop gagal dan mengembalikan error 400 atau 404, hal ini tidak memengaruhi pembekuan atau penghentian instans fungsi.

404

500

Function Compute me-restart instans fungsi.

Konfigurasi kait siklus hidup

  1. Masuk ke Konsol Function Compute. Di panel navigasi sebelah kiri, pilih Function Management > Functions.

  2. Di bilah navigasi atas, pilih wilayah. Pada halaman Functions, klik fungsi target.

  3. Di halaman detail fungsi, klik tab Configuration. Di bagian Instance Configuration pada panel navigasi kiri, klik Modify.

  4. Di panel Instance Configuration, atur kait dan periode timeout, lalu klik Deploy.

  5. Setelah mengonfigurasi kait, implementasikan logikanya dalam kode Anda. Klik Deploy di atas editor kode, lalu klik Test Function.

Lihat log kait siklus hidup instans

Anda dapat melihat log untuk kait siklus hidup di Function Logs.

  1. Masuk ke Konsol Function Compute. Di panel navigasi sebelah kiri, pilih Function Management > Functions.

  2. Di bilah navigasi atas, pilih wilayah. Pada halaman Functions, klik fungsi target.

  3. Di halaman detail fungsi, klik tab Test, klik Test Function, lalu pilih Logs > Function Logs.

    Di tab Function Logs, Anda dapat melihat log pemanggilan fungsi dan log kait Initializer. Berikut adalah contohnya:

    2024-06-26 10:59:23FC Initialize Start RequestId: 529eab23-9b3a-4ffc-88c8-9a686*******
    2024-06-26 10:59:23FC Initialize End RequestId: 529eab23-9b3a-4ffc-88c8-9a686*******
    2024-06-26 10:59:25FC Invoke Start RequestId: 1-667b840c-15c49df0-b7dc1*******
    2024-06-26 10:59:25FC Invoke End RequestId: 1-667b840c-15c49df0-b7dc1*******

    Log kait PreStop mungkin tidak langsung muncul karena Function Compute menyimpan cache instans fungsi untuk periode tertentu sebelum menghapusnya. Untuk memicu kait PreStop sesuai permintaan, Anda dapat memperbarui konfigurasi atau kode fungsi. Setelah pembaruan, periksa Function Logs untuk melihat log kait PreStop.

    2024-06-26 11:04:33FC PreStop Start RequestId: c4385899-f071-490e-a8b7-e33c5*******
    2024-06-26 11:04:33FC PreStop End RequestId: c4385899-f071-490e-a8b7-e33c5*******