配置函数初始化
函数初始化是指调用函数时对其进行初始化设置的过程,包括设置函数的初始状态、分配资源或为函数内部的变量赋予初始值等。
FunctionGraph是在函数实例启动成功后执行函数的初始化,初始化执行成功后,函数实例才能开始处理函数的调用请求。
FunctionGraph保证一个函数实例在生命周期内只成功执行一次函数初始化。函数初始化的执行时间也会被计量,用户需要为此付费,计费方式与函数的调用处理一致。
一般场景下,多个请求处理可以共享的业务逻辑适合放到初始化函数,以降低函数时延,例如深度学习场景下加载规格较大的模型、数据库场景下连接池构建。
约束与限制
- 函数初始化入口需要和函数执行入口在同一文件下。
- 开启函数初始化功能后,各运行时的函数初始化入口命名规范与原有函数执行入口保持一致。如Node.js和Python函数的执行入口命名规则为:[文件名].[初始化函数名]。
配置函数初始化
- 登录函数工作流控制台,在左侧的导航栏选择“函数 > 函数列表”。
- 单击函数的名称,进入函数详情页。
- 在“设置”页签下选择“生命周期”。
- 在设置页面开启“初始化配置”,启用函数的初始化,并配置初始化参数。
HTTP函数的“初始化配置”开关默认开启,且不可关闭。
图1 开启初始化配置
表1 初始化配置参数说明 参数
说明
初始化超时时间(秒)
函数初始化的超时时间,可设置范围为1-300秒。
函数初始化入口
仅事件函数可配置此参数。
各运行时的函数初始化入口命名规范与原有函数执行入口保持一致。如Node.js和Python函数的执行入口命名规则为:[文件名].[初始化函数名]。
说明:函数代码配置信息请参见配置函数代码。
初始化函数代码示例
- Node.js(initializer入口介绍)
exports.initializer = function(context, callback) { callback(null, ''); };
- Python(initializer入口介绍)
def my_initializer(context): print("hello world!")
- Java(initializer入口介绍)
public void my_initializer(Context context) { RuntimeLogger log = context.getLogger(); log.log(String.format("ak:%s", context.getAccessKey())); }
- PHP(initializer入口介绍)
<?php Function my_initializer($context) { echo 'hello world' . PHP_EOL; } ?>