Topik ini menjelaskan struktur penanganan acara dalam runtime kustom. Topik ini juga memberikan contoh penggunaan penanganan acara dalam runtime kustom serta tautan ke beberapa pertanyaan yang sering diajukan.
Informasi latar belakang
Dalam runtime kustom, Function Compute meneruskan header umum, badan permintaan, metode POST, jalur /invoke, dan jalur /initialize ke server HTTP Anda. Header umum dapat digunakan untuk membangun parameter yang mirip dengan parameter input context dalam runtime resmi. Anda juga dapat membangun parameter input yang mirip dengan parameter event dalam runtime resmi berdasarkan badan permintaan fungsi yang dipanggil.
Tanda tangan untuk penanganan acara
Jika suatu fungsi menggunakan penanganan acara, server HTTP perlu mengimplementasikan logika yang sesuai dengan jalur /invoke dan metode POST. Function Compute secara otomatis merutekan permintaan ke POST /invoke.
Jalur | Permintaan | Respon yang diharapkan |
POST |
Penting
| Badan respons: nilai yang dikembalikan oleh penangan fungsi. |
Kode contoh
Contoh kode berikut menggunakan kerangka web Flask dalam runtime Python 3.10.
from flask import Flask
from flask import request
import sys
REQUEST_ID_HEADER = 'x-fc-request-id'
app = Flask(__name__)
@app.route("/invoke", methods = ["POST"])
def hello_world():
rid = request.headers.get(REQUEST_ID_HEADER)
print("FC Invoke Start RequestId: " + rid)
data = request.stream.read()
print(str(data))
print("FC Invoke End RequestId: " + rid)
return "Hello, World!", 200, [()]
if __name__ == '__main__':
app.run(host='0.0.0.0',port=9000)
Pada contoh kode sebelumnya:
@app.route("/invoke", methods = ["POST"]): menambahkan fungsihello_worldyang menggunakan jalur/invokedan metode POST menggunakan kerangka web Flask.rid = request.headers.get(REQUEST_ID_HEADER): mendapatkan ID permintaan dalam header permintaan.data = request.stream.read(): mendapatkan badan permintaan.return "Hello, World!": mengirimkan badan respons.
Penanganan acara tidak dapat mengembalikan kode status atau header respons. Sebagai contoh, jika Anda menggunakan kerangka web Flask, kode status dan header respons yang akan dikembalikan oleh return "Hello, World!", 400, [('Author', 'Aliyun-FC')] tidak berlaku.
Contoh untuk bahasa pemrograman lainnya
Anda dapat menggunakan Serverless Devs untuk memigrasikan aplikasi Anda ke Function Compute hanya dengan beberapa klik. Contoh berikut menunjukkan cara menggunakan Serverless Devs untuk menerapkan dan memanggil fungsi secara efisien. Anda dapat memodifikasi kode contoh berdasarkan kebutuhan bisnis Anda.