全部产品
Search
文档中心

Function Compute:Metode kait siklus hidup instans

更新时间:Nov 11, 2025

Topik ini menjelaskan cara mengimplementasikan dan menggunakan metode kait siklus hidup instans dalam Python.

Informasi latar belakang

Setelah Anda mengimplementasikan dan mengonfigurasi kait siklus hidup instans, Function Compute memanggil kait tersebut saat event siklus hidup yang sesuai terjadi. Siklus hidup instans mencakup kait Initializer dan PreStop. Untuk informasi selengkapnya, lihat Konfigurasikan siklus hidup instans.

Aturan penagihan untuk kait siklus hidup instans sama dengan pemanggilan fungsi standar. Namun, log eksekusinya hanya dapat dilihat di Real-time Logs, Function Logs, atau Advanced Logs. Log kait siklus hidup tidak ditampilkan di Invocation Request List. Untuk informasi selengkapnya, lihat Lihat log kait siklus hidup instans.

Kait Initializer

Kait Initializer dijalankan setelah instans fungsi dimulai dan sebelum penanganan dijalankan. Function Compute memastikan bahwa kait Initializer dijalankan hanya sekali per siklus hidup instans. Jika kait Initializer gagal pada eksekusi pertamanya, pemanggilan fungsi akan mengembalikan error. Saat Anda memanggil fungsi berikutnya, instans baru dibuat untuk menjalankan kembali kait Initializer.

Catatan

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

Kait Initializer hanya memiliki satu parameter masukan, context, dan digunakan dengan cara yang sama seperti handler.

Kode berikut menunjukkan metode Initializer sederhana.

def initialize(context):
    print("initialize invoked")

initialize adalah nama metode kait Initializer. Nama ini harus sesuai dengan kait Initializer yang Anda konfigurasikan di Konsol Function Compute. Misalnya, jika Anda mengatur kait Initializer untuk suatu fungsi menjadi index.initialize, Function Compute memuat metode initialize dari file index.py.

Tanda tangan metode

  • Satu-satunya parameter masukan adalah context. Parameter ini menyediakan konteks waktu proses untuk pemanggilan fungsi FC Anda.

  • Tidak ada nilai yang dikembalikan.

Kait PreStop

Kait PreStop dijalankan sebelum instans fungsi dihapus. Tanda tangan metodenya sama dengan kait Initializer.

Kode berikut menunjukkan metode PreStop sederhana.

def preStop(context):
    print("preStop invoked")

Konfigurasikan kait siklus hidup

Konfigurasikan kait di konsol

Masuk ke Konsol Function Compute untuk mengonfigurasi Initializer Hook dan PreStop Hook untuk suatu fungsi. Untuk informasi selengkapnya, lihat Konfigurasikan siklus hidup instans.

Format untuk kait adalah [Nama file.Nama metode]. Misalnya, jika Anda mengatur Initializer Hook menjadi index.initialize, metode initialize dari file index.py akan digunakan.

Konfigurasikan kait menggunakan Serverless Devs

Jika Anda menggunakan Serverless Devs, Anda dapat menambahkan konfigurasi kait Initializer dan PreStop ke file s.yaml.

  • Konfigurasi kait Initializer

    Di bawah konfigurasi function, tambahkan bidang instanceLifecycleConfig.initializer. Bidang ini mencakup parameter handler dan timeout.

  • Konfigurasi kait PreStop

    Di bawah konfigurasi function, tambahkan bidang instanceLifecycleConfig.preStop. Bidang ini mencakup parameter handler dan timeout.

Kode berikut memberikan contoh.

edition: 3.0.0
name: fcDeployApp
access: "default"

vars: # Variabel global
  region: "cn-hangzhou"

resources:
  hello_world:
    component: fc3 # Nama komponen
    props:
      region: ${vars.region}              # Untuk informasi tentang cara menggunakan variabel, lihat: https://docs.serverless-devs.com/serverless-devs/yaml#%E5%8F%98%E9%87%8F%E8%B5%8B%E5%80%BC
      functionName: "emojipy"
      description: 'this is emoji'
      runtime: "python3"
      code: ./
      handler: index.handler
      memorySize: 128
      timeout: 30
      environmentVariables:
        PYTHONPATH: /code:/code/python:/opt/python
#     initializationTimeout: 20     # Timeout untuk metode inisialisasi
#     initializer: index.my_initializer # Metode inisialisasi
      instanceLifecycleConfig:      # Fungsi ekstensi
        preStop:                    # Fungsi PreStop
          handler: index.preStop    # Penanganan fungsi
          timeout: 60               # Timeout
        initializer:                # Fungsi Initializer
          handler: index.initialize
          timeout: 60  

Untuk informasi selengkapnya tentang spesifikasi konfigurasi YAML untuk Serverless Devs, lihat Perintah umum Serverless Devs.

Lihat log kait siklus hidup instans

Anda dapat melihat log untuk kait siklus hidup di 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 yang dituju.

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

    Pada tab Logs, Anda dapat melihat log pemanggilan fungsi dan log Initializer. Contoh:

    2024-03-04 17:57:28FC Initialize Start RequestId: 1-65e59b07-1520da26-bf73bbb91b69
    2024-03-04 17:57:282024-03-04 09:57:28.192 1-65e59b07-1520da26-bf73bbb91b69 [info] initializer
    2024-03-04 17:57:28FC Initialize End RequestId: 1-65e59b07-1520da26-bf73bbb91b69
    2024-03-04 17:57:28FC Invoke Start RequestId: 1-65e59b07-1520da26-bf73bbb91b69
    2024-03-04 17:57:28FC Invoke End RequestId: 1-65e59b07-1520da26-bf73bbb91b69

    Setiap instans fungsi di-cache selama periode tertentu dan tidak langsung dihapus, sehingga Anda tidak dapat langsung melihat log untuk kait PreStop. Untuk memicu kait PreStop dengan cepat, Anda dapat memperbarui konfigurasi fungsi atau kode fungsi. Setelah pembaruan selesai, Anda dapat melihat log untuk kait PreStop di Function Logs. Kode contoh berikut menunjukkan contohnya:

    2024-03-04 18:33:26FC PreStop Start RequestId: 93c93603-9fbe-4576-9458-193c8b213031
    2024-03-04 18:33:262024-03-04 10:33:26.077 93c93603-9fbe-4576-9458-193c8b213031 [info] preStop
    2024-03-04 18:33:26FC PreStop End RequestId: 93c93603-9fbe-4576-9458-193c8b213031

Program contoh

Function Compute menyediakan program contoh MySQL yang menggunakan kait Initializer dan PreStop. Dalam contoh ini, kait Initializer mendapatkan konfigurasi database MySQL dari variabel lingkungan, membuat koneksi MySQL, dan menguji konektivitasnya. Kait PreStop menutup koneksi MySQL tersebut.

Untuk informasi selengkapnya, lihat python3-mysql.