tencent cloud

云函数

动态与公告
产品动态
产品公告
新手指引
产品简介
产品概述
相关概念
工作原理
产品优势
应用场景
相关产品
购买指南
计费概述
计费方式
计费项与计费方式
函数算力支持
免费额度
产品定价
计费示例
欠费与停服说明
快速入门
使用控制台创建一个事件函数
操作指南
配额管理
函数管理
Web 函数管理
日志管理
并发管理
触发器管理
函数 URL
自定义域名
版本管理
别名管理
权限管理
运行实例管理
插件管理
监控与告警管理
网络配置
层管理
执行配置
扩展存储管理
DNS 缓存配置
资源托管模式管理
近离线资源托管模式
工作流
触发器
触发器概述
触发器事件消息结构汇总
API 网关触发器
COS 触发器
CLS 触发器
定时触发器
CKafka 触发器
Apache Kafka 触发器
MQTT 触发器
触发器配置描述
MPS 触发器
CLB 触发器说明
云 API 触发器
开发指南
基本概念
测试云函数
环境变量
依赖安装
使用容器镜像
使用 Docker 安装依赖
错误类型与重试策略
死信队列
云函数接入数据库
自动化部署
云函数状态码
常见错误码解决方法
开发者工具
Serverless Web IDE
函数间调用 SDK
第三方工具
代码开发
Python
Node.js
Golang
PHP
Java
Custom Runtime
使用镜像部署函数
Web 框架部署
通过命令行完成框架部署
快速部署 Egg 框架
快速部署 Express 框架
快速部署 Flask 框架
快速部署 Koa 框架
快速部署 Laravel 框架
快速部署 Nestjs 框架
快速部署 Nextjs 框架
快速部署 Nuxtjs 框架
快速部署 Django 框架
实践教程
最佳实践概述
云产品联合解决方案
业务开发相关实践
实时音视频 TRTC
对象存储 COS
消息队列 CKafka
日志服务CLS
负载均衡 CLB
视频处理 MPS
内容分发网络 CDN
云数据仓库 PostgreSQL
云点播 VOD
短信 SMS
Elasticsearch Service
定时任务
视频处理
客户案例
腾讯在线教育
在线教育行业案例
游戏聊天系统
腾讯互娱国际(IEGG)
API 文档
History
Introduction
API Category
Making API Requests
Other APIs
Namespace APIs
Layer Management APIs
Async Event Management APIs
Trigger APIs
Function APIs
函数和层的状态说明
Data Types
Error Codes
SDK文档
常见问题
通用问题
Web 函数相关问题
计费相关问题
网络相关问题
日志相关问题
SCF 工具相关问题
事件处理相关问题
API 网关触发器相关问题
相关协议
Service Level Agreement
联系我们
词汇表
文档云函数开发指南错误类型与重试策略

错误类型与重试策略

PDF
聚焦模式
字号
最后更新时间: 2024-04-22 17:45:15
在函数调用的过程中,可能有多种原因导致函数调用失败。不同的错误类型以及调用方式(同步调用、异步调用)都会影响重试策略。您可以配置 死信队列 收集错误事件信息、分析失败原因。

错误类型

在函数调用的过程中,可能有多种原因导致函数调用失败。错误类型分为以下几类:

调用错误

调用错误发生在函数实际执行前。以下情形均会产生调用错误:
调用请求错误。例如传入的 Event 数据结构过大、入参不符合要求、函数不存在等。
调用方错误。主要出现在调用方权限不足的情形。
超限错误。调用的并发数超出 最大并发数 限制。

运行错误

运行错误发生在函数实际运行中。运行错误有以下情形:
用户代码运行错误。这类错误出现在用户代码执行过程中,例如函数代码抛出异常,或者返回结果格式问题等。
Runtime 错误。函数运行过程中,Runtime 负责拉起用户代码并执行。Runtime 错误指的是 Runtime 发现并上报的错误,例如函数运行超时(超时的时间限制请参见 限制说明、代码语法报错等)。

系统错误

函数平台的错误,例如 internal error。

重试策略

不同错误类型以及调用方式(同步调用、异步调用)都会影响重试策略。

同步调用

同步调用包含:云 API 触发器 的同步调用、API 网关触发器CKafka 触发器CLB 触发器。 由于同步调用的过程中,错误信息会直接返回给用户,所以在同步调用中发生错误时,平台不会自动重试,重试策略(是否重试、重试几次)均由调用方决定。
注意:
Ckafka 触发器会创建后台模块作为消费者,连接 CKafka 实例并消费消息。后台模块在获取到消息后,同步调用触发函数。由于 CKafka 触发器的后台模块是由云函数侧维护,即使是同步调用,其重试策略仍由云函数侧控制。
对于运行错误(含用户代码错误和 Runtime 错误),CKafka 触发器会按照您配置的重试次数进行重试。默认重试10000次。
对于超限错误和系统错误,CKafka 触发器会采用指数退避的方式持续重试,直至成功为止。

异步调用

异步调用包含:云 API 触发器 的异步调用、COS 触发器定时触发器CMQ Topic 触发器 等,具体触发器调用类型请参考相关 触发器说明文档。 您可以根据业务诉求在函数配置中修改和自定义默认的重试次数最长等待时间配置,该配置只适用于异步调用场景。



重试次数:函数返回错误时云函数重试的次数,该参数只适用于运行错误的策略配置,默认配置为2次。
最长保留时间:云函数在异步事件队列中保留事件的最长时间,该参数适用于所有异步调用的重试配置,默认配置为 6 小时,最大长度支持 10 万条。
异步调用发生各种错误类型的重试策略:
错误类型
重试策略
系统错误
函数请求执行状态码为 500。当发生该类错误时,函数平台会根据您配置的最长保留时间持续重试(默认持续重试6小时),重试间隔 1 分钟。如果您配置了死信队列,重试超过最长保留时间仍失败的事件会被发送到死信队列,您可进一步处理,否则事件将被函数平台丢弃。
超限错误
函数请求执行状态码为 432。当发生该类错误时,函数平台会根据您配置的最长保留时间持续重试(默认持续重试6小时),重试间隔 1 分钟。如果您配置了死信队列,重试超过最长保留时间仍失败的事件会被发送到死信队列,您可进一步处理,否则事件将被函数平台丢弃。
运行错误(除系统错误与超限错误外,其他错误均为运行错误)
当发生该类错误时,函数平台按照配置的重试次数进行重试,重试间隔 1 分钟。在自动重试的同时,新的触发事件仍可正常处理。如果您配置了死信队列,按照配置的重试次数重试后仍失败的事件或超出最长等待时间的事件将传入死信队列,否则事件将被函数平台丢弃。
注意:
1. 由于运行机制差异,重试及死信队列配置对于异步调用的 异步执行 函数在执行过程中发生错误的请求无效。
2. 如何判断是否超出最长等待时间?事件重试的时间-事件首次触发的时间大于最长等待时间即为超出最长等待时间。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈