当对函数发起异步调用时,如果需要追踪并保存异步调用各个阶段的状态,实现更丰富的任务控制和可观测能力,可以选择开启任务模式处理异步请求。本文介绍异步任务的背景信息、使用限制和常用功能。
背景信息
开启异步任务后,可以实现以下功能:
- 每次函数调用将详细记录调用过程中的状态转换信息,例如排队等待处理中(Enqueued)、调用执行成功(Succeeded)和调用执行失败(Failed)等。
- 拥有函数请求生命周期管理能力,可以主动终止执行中的异步任务。
异步任务会保存状态信息,因此,函数的调用和执行会有一定的额外延迟,该延迟不会产生额外的费用。
使用限制
-
场景限制
异步任务虽然功能更丰富,但相应的系统开销更大。以下场景建议关闭任务模式:
- 对请求处理链路延时非常敏感,需要平均延时在百毫秒以下。
- 需要每秒数千甚至更高的速率发起异步调用。
-
地域限制
异步任务支持华东1地域。
-
时效限制
仅支持查询7天内的任务状态信息。
任务管理
异步任务的状态
针对每一次任务调用,函数计算均会记录任务的状态变更过程,并提供实时的状态查询能力。可以通过SDK或函数计算控制台查看任务的具体状态。目前任务有如下几种状态:
执行状态 | 说明 |
---|---|
已入队 | 异步消息已入队,等待处理。 |
执行中 | 调用执行中,实例已经开始运行任务代码。 |
执行成功 | 调用执行成功。 |
执行失败 | 调用执行失败。 |
已停止 | 调用执行终止。 |
停止中 | 执行停止中。 |
已过期 | 异步消息配置了存活有效期,该任务因过期已被丢弃(未触发)。 |
无效 | 任务处于无效状态(未触发)。 |
重试中 | 异步调用因执行错误而进行重试中。 |
管理任务
函数开启异步任务模式
- 登录函数计算控制台,在左侧导航栏,单击函数。
- 在顶部菜单栏,选择地域,然后在函数页面,单击目标函数。
- 在函数详情页面,选择配置页签,然后在左侧选择异步配置。
- 在异步配置页面的异步配置区域,单击编辑,然后在异步配置面板,任务模式选择开启后单击部署。
启动或停止任务
- 登录函数计算控制台,在左侧导航栏,单击函数。
- 在顶部菜单栏,选择地域,然后在函数页面,单击目标函数。
- 在函数详情页面,选择任务页签,单击提交任务,在弹出的对话框,选择任务ID生成方式和任务执行时间,然后单击确定。
- 可以在下方任务列表查看任务状态、任务ID、执行时长等。
事件触发
可以通过创建支持异步调用的触发器来触发异步任务,比如日志触发器、对象存储触发器等。
任务防重复提交
为了避免任务重复执行,函数计算支持为每次提交的任务设定全局唯一的任务ID。
函数计算提供任务ID这一任务概念,该ID全局唯一。函数计算会对重复提交的任务进行校验,当有相同任务ID进入系统时,该次请求将认为是重复提交而被拒绝。