全部产品
Search
文档中心

Function Compute:Penanganan acara

更新时间:Jul 06, 2025

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 /invoke

Penting

Content-Type harus application/octet-stream.

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 fungsi hello_world yang menggunakan jalur /invoke dan 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.

Penting

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.

FAQ