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 | 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 StatusCode
Catatan Jika kait Initializer mengalami timeout atau gagal, server selalu mengembalikan kode status HTTP 200. Anda harus memeriksa header respons |
(Opsional) GET |
| Badan respons: Nilai kembali dari kait PreStop. StatusCode
|
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.
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 |
|
404 | |
500 | Function Compute me-restart instans fungsi. |
Konfigurasi kait siklus hidup
Masuk ke Konsol Function Compute. Di panel navigasi sebelah kiri, pilih .
Di bilah navigasi atas, pilih wilayah. Pada halaman Functions, klik fungsi target.
Di halaman detail fungsi, klik tab Configuration. Di bagian Instance Configuration pada panel navigasi kiri, klik Modify.
Di panel Instance Configuration, atur kait dan periode timeout, lalu klik Deploy.
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.
Masuk ke Konsol Function Compute. Di panel navigasi sebelah kiri, pilih .
Di bilah navigasi atas, pilih wilayah. Pada halaman Functions, klik fungsi target.
Di halaman detail fungsi, klik tab Test, klik Test Function, lalu pilih .
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*******