全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 智能硬件
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 更多
函数计算

调用函数

更新时间:2018-07-04 15:41:09

调用类型

您可以采用 同步调用异步调用 这2种方式调用函数。

  • 同步调用:事件被函数处理后直接将结果返回。例如使用控制台调用是同步调用。
  • 异步调用:事件在写入到消息队列后则返回。函数计算系统会保证该消息被可靠的处理。例如使用 OSS 事件触发器、定时触发器是异步调用。
  • 使用 fcli、SDK 调用函数执行时,您可以设置函数是同步调用或是异步调用。
  • 同步 / 异步请求对传入的事件有不同的限制,具体请参考 限制项文档

并发执行

并发执行是指在任意指定时间您的函数代码同时执行的数量。您可以用下述公式来估算并发的函数调用数。

请求速率 * 函数执行时间

其中,请求速率是指函数被调用的速率,单位为“每秒请求数”或者“每秒事件数”。函数执行时间的单位为“秒”。例如,考虑一个处理阿里云 OSS 事件的函数。假定函数平均用时 3 秒,OSS 每秒发布 10 个事件。因此,您的函数有 30 个并发执行。

安全限制

在某些情况下,由于用户的错误设置,函数执行可能会失控。考虑如下场景,您设置了 OSS 触发器,当图片文件上传到 OSS 上的 foo bucket 后,会调用相关函数处理。该函数将原图片调整为 3 张不同分辨率的图片,并将结果错误地写回到了 foo bucket 下。因此又会造成新的函数被调用,无限循环下去。为了避免因为失控函数导致财务损失,函数计算在每个账户粒度设置了并发执行限制,默认为100。您可以通过函数在 云监控 中的相关指标(throttles)来观察流控行为。如果您需要提高该限制,请提交工单。

重试机制

根据调用方式的不同,对未成功执行的函数的重试机制不同。

  • 同步调用:同步调用的函数执行失败系统不会进行处理。您可以自行重试。

  • 异步调用:如果您的函数异步调用失败,以下情况函数计算会自动重试。

函数失败原因 状态码 服务器端行为 是否计费
HandledError/UnhandledError,关于错误类型请参考 文章,函数超时属于 UnhandledError 200 最多重试两次并返回 Traceback 按照调用次数计费
函数并发执行超过上限 429 以指数退避方式重试执行 5 小时
系统内部错误 500 以指数退避方式重试执行 5 小时
函数计算资源不足 503 以指数退避方式重试执行 5 小时

您在使用过程中遇到问题,请 联系我们

本文导读目录