日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

功能概覽

本文介紹異步調用的背景信息、應用場景以及如何實現延遲調用函數等。

背景信息

函數計算系統接收異步調用請求后,將請求持久化后會立即返回響應,而不是等待請求執行完成后再返回。函數計算保證請求至少執行一次。如果您希望獲得異步調用的結果,可以通過配置異步調用目標來實現,具體信息,請參見結果回調。如果您希望獲得函數異步請求各個階段的狀態,可通過開啟任務模式來實現,具體信息,請參見功能概覽

應用場景

如果您的函數中存在耗時較長、資源消耗較大或容易出錯的邏輯,您可以使用異步調用的方式,讓您的程序響應更加迅速,更加可靠地應對突發流量。例如:

  • 新用戶注冊系統中,新用戶發送注冊請求,注冊成功后系統向用戶發送注冊成功郵件通知,發送郵件的動作可以從注冊請求處理流程中剝離,異步執行。

  • 上傳文件時,轉換格式和導入導出等動作可以從上傳數據流程中剝離,異步執行。

說明

HTTP函數支持同步調用和異步調用。更多信息,請參見HTTP調用方式。

延遲調用

針對某些場景,您提交一次異步調用后,需要函數計算對其進行延遲觸發。您可以通過調用API(SDK)實現延遲調用函數。

在代碼中添加HTTP請求頭x-fc-async-delay,其取值范圍為[0,3600],單位為秒。函數計算將從您觸發執行開始計算,延遲x-fc-async-delay設置的時間后觸發函數調用。

以Go SDK為例,代碼如下所示:

package main

import (
    "fmt"
    "os"
    "github.com/aliyun/fc-go-sdk"
)
func main() {
      /*
        阿里云賬號AccessKey擁有所有API的訪問權限,建議您使用RAM用戶進行API訪問或日常運維。
        建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導致AccessKey泄露,威脅您賬號下所有資源的安全。
        本示例以將AccessKey和AccessSecretKey保存在環境變量中實現身份驗證為例。
        運行本示例前請先在本地環境中設置環境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
        在FC Runtime運行環境下,配置執行權限后,ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET環境變量會自動被設置。
      */
    fcClient, err := fc.NewClient(fmt.Sprintf("%s.cn-shanghai.fc.aliyuncs.com", os.Getenv("ACCOUNT_ID")),
        "2016-08-15", os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
    if err != nil {
        panic(err)
    }

    // invoke function with delay
    invokeInput := fc.NewInvokeFunctionInput({ServiceName}, {FunctionName}).WithPayload({payload})
    invokeInput = invokeInput.WithAsyncInvocation().WithHeader("x-fc-async-delay", "200")
    _, err := FCClient.InvokeFunction(invokeInput)
    if err != nil {
        panic(err)
    }
}
重要

通過上述操作實現的延遲調用在某些場景下存在一定誤差,如果您需要更加精準的延遲調用函數,請使用定時觸發器。具體信息,請參見定時觸發器。

常見功能

異步調用的常見功能如下所示: