Dalam runtime kustom, server HTTP Anda menangani pemanggilan berbasis event melalui titik akhir <code code-type="xCode" data-tag="code">POST /invoke. Function Compute meneruskan muatan event dan header umum ke titik akhir ini, dan server Anda mengembalikan hasilnya sebagai badan respons.
Mulai cepat
Contoh Flask berikut pada Python 3.10 menunjukkan penanganan event minimal:
from flask import Flask, request
REQUEST_ID_HEADER = 'x-fc-request-id'
app = Flask(__name__)
@app.route("/invoke", methods=["POST"])
def handler():
# Ekstrak ID permintaan dari header umum
rid = request.headers.get(REQUEST_ID_HEADER)
print("FC Invoke Start RequestId: " + rid)
# Baca muatan event
data = request.stream.read()
print(str(data))
print("FC Invoke End RequestId: " + rid)
# Kembalikan badan respons
return "Hello, World!"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=9000)Poin-poin penting:
@app.route("/invoke", methods=["POST"])mendaftarkan penanganan untuk path<code code-type="xCode" data-tag="code">POST /invoke.<code code-type="xCode" data-tag="code">request.headers.get(REQUEST_ID_HEADER)membaca ID permintaan dari header umum.<code code-type="xCode" data-tag="code">request.stream.read()membaca muatan event dari badan permintaan.<code code-type="xCode" data-tag="code">return "Hello, World!"mengirimkan kembali badan respons ke pemanggil.
Cara kerja
Saat suatu fungsi dipanggil, Function Compute mengarahkan permintaan ke server HTTP Anda dalam tiga langkah:
Function Compute mengirimkan muatan event sebagai badan permintaan ke
POST /invokepada server HTTP Anda, bersama dengan header umum yang membawa konteks waktu proses (ID permintaan, nama fungsi, kredensial, dan lainnya).Server HTTP Anda memproses event dan menjalankan logika bisnis Anda.
Server Anda mengembalikan hasil sebagai badan respons. Function Compute mengirimkan badan ini ke pemanggil.
Function Compute juga mengirimkan permintaan POST /initialize saat instans baru dimulai. Implementasikan path ini jika fungsi Anda memerlukan logika inisialisasi satu kali seperti memuat model atau membuat koneksi database.
Spesifikasi permintaan dan respons
Permintaan
| Component | Detail |
|---|---|
| Metode dan path | <code code-type="xCode" data-tag="code">POST /invoke |
| Header | Header umum, termasuk x-fc-request-id, metadata fungsi, dan kredensial temporary. |
| Body | Input fungsi — muatan yang ditentukan saat memanggil API InvokeFunction. |
| Content-Type | <code code-type="xCode" data-tag="code">application/octet-stream |
Respons
Kembalikan hasil fungsi sebagai badan respons. Pemanggil menerima badan ini sebagai output pemanggilan.
Penanganan event hanya mengembalikan badan respons. Kode status dan header respons diabaikan. Sebagai contoh, jika penanganan Flask Anda mengembalikan <code code-type="xCode" data-tag="code">return "Hello, World!", 400, [('Author', 'Aliyun-FC')], kode status 400 dan header Author tidak berlaku.
Contoh untuk bahasa lain
Anda dapat menggunakan Serverless Devs untuk memigrasikan aplikasi Anda ke Function Compute hanya dengan beberapa klik. Contoh berikut menunjukkan cara menggunakan Serverless Devs untuk mendeploy dan memanggil fungsi secara efisien. Anda dapat memodifikasi kode contoh sesuai kebutuhan bisnis Anda.