赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 函数计算 FC 2.0
  4. 操作指南
  5. 函数调用
  6. 异步调用
  7. 功能概览

功能概览

  • 异步调用
  • 发布于 2025-04-16
  • 0 次阅读
文档编辑
文档编辑

本文介绍异步调用的背景信息、应用场景以及如何实现延迟调用函数等。

背景信息

函数计算系统接收异步调用请求后,将请求持久化后会立即返回响应,而不是等待请求执行完成后再返回。函数计算保证请求至少执行一次。如果您希望获得异步调用的结果,可以通过配置异步调用目标来实现,具体信息,请参见结果回调。如果您希望获得函数异步请求各个阶段的状态,可通过开启任务模式来实现,具体信息,请参见功能概览。

应用场景

如果您的函数中存在耗时较长、资源消耗较大或容易出错的逻辑,您可以使用异步调用的方式,让您的程序响应更加迅速,更加可靠地应对突发流量。例如:

  • 新用户注册系统中,新用户发送注册请求,注册成功后系统向用户发送注册成功邮件通知,发送邮件的动作可以从注册请求处理流程中剥离,异步执行。

  • 上传文件时,转换格式和导入导出等动作可以从上传数据流程中剥离,异步执行。

说明

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)
    }
}
重要

通过上述操作实现的延迟调用在某些场景下存在一定误差,如果您需要更加精准的延迟调用函数,请使用定时触发器。具体信息,请参见定时触发器。

常见功能

异步调用的常见功能如下所示:

  • 事件触发

  • 重试策略

  • 结果回调

相关文章

功能概览 2025-04-16 14:22

本文介绍异步调用的背景信息、应用场景以及如何实现延迟调用函数等。 背景信息

重试策略 2025-04-16 14:22

当函数异步调用执行失败后,函数计算自动进行错误重试。本文介绍重试机制以及如何在函数计算控制台配置重试策略。

结果回调 2025-04-16 14:22

函数计算接收异步调用请求后,将请求持久化后会立即返回响应,无需等待请求执行完成。如您需要保留执行失败且超过最大重试次数被丢弃的请求,或通知下游异步调用结果,可以通过配置结果回调功能实现。配置异步目标服务后,异步调用请求执行完成后,函数计算根据执行结果自动回调对应的服务。

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号