函数类

最近更新时间:2019-05-15 17:50:56

SCF 函数是什么?

无服务器云函数上运行的代码以 “SCF 函数” 的形式上传。每个函数都有相关的配置信息,如其名称、描述、资源要求等。代码必须以 “无状态” 样式编写,即应假设与底层计算基础设施无密切关系。本地文件系统访问、子进程等严格控制在云函数的生命周期内,且任何持续状态都应存储在外部可用的存储如 COS 或 TencentDB。SCF 函数可包含外部库,甚至是本机库。

SCF 是否会重复使用函数实例?

为了提高性能,SCF 会在一定时间内保留您的函数实例,将其再用于服务后续请求。但您的代码不应假设此操作总是发生。

为何要保持 SCF 函数无状态?

保持函数的无状态性可使函数按需要尽可能多地启动多个实例,从而满足请求的速率。

如何使用 CLI 创建 SCF 函数?

您可以将代码(以及任何依赖库)打包为 zip 并使用 CLI 从您的本地环境上传 zip 文件,或将 zip 文件上传 COS Bucket 后,在创建函数时指定拉取代码 zip 包的 Bucket 名和文件名。CLI 详情可以参考 TCF 命令行工具

如何进行故障排除?

SCF 集成了日志功能,每次调用都会将该次调用的日志输出到控制台日志窗口中,日志记录了该函数每次使用时所消耗的资源、代码中的 log 及平台调用信息等,您可以轻松将故障排除相关的 log 语句插入到代码中。

通过上传 zip 包创建函数后,提示“函数服务创建失败,请重试”?

通常是函数的执行方法无法在zip包中找到对应的执行文件或函数入口,或压缩时包括了外层文件夹。执行方法格式为a.b,其中:a 是 py 文件的名称,b 是代码中的方法名。
如果用户上传的 zip 包在解压后的根目录下找不到名为a.py的文件,则会提示"函数代码无法显示,代码 zip 包中找不到执行方法指定的文件名"。

例如:文件结构如下

--RootFolder
----SecondFolder
------a.py
------thirdfolder
--------sth.json

压缩代码 zip 包时,如果压缩的是 SecondFolder,则会出现上述错误;需要选择 a.pythirdfoler 进行压缩。

出现timeout时如何处理?

请先将超时时间设置为一个较大值(不超过300均可)再测试一遍,如果仍然超时,请检查您的代码 log 中是否存在过大的输入数据和计算量、无法跳出的循环、长时间的 sleep 等。

如何扩容?

用户不必关心函数扩缩容问题,SCF 平台会代您自动扩展。每当接收函数请求时,SCF 会快速定位空闲容量并运行您的代码。由于您的代码是无状态的,可以在需要时尽可能多地启动实例,而不会发生冗长的部署和配置延迟。

如何分配函数计算资源?

用户可以选择函数分配的内存量,CPU 和其他资源也会相应的按比例进行分配。例如,选择256MB的内存时,分配至函数的 CPU 约是分配128MB内存的两倍。

能否使用本地库?

可以。用户可以在函数代码中包含自己的代码库,并以 zip 包的形式上传至平台。

函数调用报错 “Resource limit exceed for function”?

通常是是函数并发触发了配额上限,可以通过公式“函数并发 = qps(每秒的请求数量)x 函数执行时间(秒)”来计算所需的函数并发数量;例如:qps = 100,函数执行时间 = 100ms,则实际需要的函数并发= 100 x 0.1 = 10;如果并发超了上限,您可以通过 提交工单 来提升限制。