
# 配置函数初始化
本章节指导如何通过函数工作流控制台，配置函数的初始化。
#### 函数初始化概述
函数初始化是指调用函数时对其进行初始化设置的过程，包括设置函数的初始状态、分配资源和为函数内部的变量赋予初始值等。
FunctionGraph是在函数实例启动成功后执行函数的初始化，初始化执行成功后，函数实例才能开始处理函数的调用请求。
FunctionGraph保证一个函数实例在生命周期内只成功执行一次函数初始化。函数初始化的执行时间也会被计量，用户需要为此付费，计费方式与函数的调用处理一致。
一般场景下，多个请求处理可以共享的业务逻辑适合放到初始化函数，以降低函数时延。例如深度学习场景下加载规格较大的模型、数据库场景下连接池构建。关于使用函数初始化入口Initializer进行函数开发的更多说明请参见[函数初始化入口Initializer](https://support.huaweicloud.com/devg-functiongraph/functiongraph_02_0532.html)。
#### 约束与限制
- HTTP函数的"初始化配置"开关默认开启，且不可关闭。
- 函数初始化入口需要和函数执行入口在同一文件下。
- 开启函数初始化功能后，各个运行时的函数初始化入口命名规范与原有函数执行入口保持一致。函数执行入口信息可参考[函数执行入口](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_1828.html#functiongraph_01_1828__table17352446184813)。
- 自定义镜像事件函数暂不支持进行初始化配置。
- 请勿在初始化函数中执行挂载磁盘的读写操作，这将导致函数无法读取磁盘中的内容。
 
#### 配置函数初始化
1. 登录[函数工作流控制台](https://console.huaweicloud.com/functiongraph/?locale=zh-cn)，在左侧的导航栏选择"函数 \> 函数列表"。
2. 单击函数的名称，进入函数详情页。
3. 在"设置"页签下选择"生命周期"。
4. 在设置页面开启"初始化配置"，启用函数的初始化，并参考[表1]配置初始化参数，配置完成后单击"保存"。
   图1开启初始化配置   
   ![](https://support.huaweicloud.com/usermanual-functiongraph/zh-cn_image_0000002117778577.png "点击放大")
    表1初始化配置参数说明 
   | 参数         | 说明                                                                                                                                                                                                                                                                                                                                                                                |
   |:---|:---|
   | 初始化超时时间（秒） | 函数初始化的超时时间，可设置范围为1-300秒。                                                                                                                                                                                                                                                                                                                                                          |
   | 函数初始化入口    | **仅事件函数可配置此参数，HTTP函数不显示该参数。** 函数初始化入口需要和函数执行入口在同一个文件下。各运行时的函数初始化入口命名规范与原有函数执行入口保持一致，如Node.js和Python函数的执行入口命名规则为：\[文件名\].\[执行函数名\]，且不超过128个字符。 说明： 函数代码配置信息请参见[配置函数代码](https://support.huaweicloud.com/usermanual-functiongraph/functiongraph_01_0152.html)。 |
      
   
 
#### 初始化函数代码示例
- Node.js（[initializer入口介绍](https://support.huaweicloud.com/devg-functiongraph/functiongraph_02_0410.html#section1)）
  ```
  exports.initializer = function(context, callback) {
      callback(null, '');
      };
  ```
  
- Python（[initializer入口介绍](https://support.huaweicloud.com/devg-functiongraph/functiongraph_02_0420.html#section1)）
  ```
  def my_initializer(context):
      print("hello world!")
  ```
  
- Java（[initializer入口介绍](https://support.huaweicloud.com/devg-functiongraph/functiongraph_02_0430.html#section1)）
  ```
  public void my_initializer(Context context)
  {
  RuntimeLogger log = context.getLogger();
  log.log(String.format("ak:%s", context.getSecurityAccessKey()));
  }
  ```
  
- PHP（[initializer入口介绍](https://support.huaweicloud.com/devg-functiongraph/functiongraph_02_0460.html#section1)）
  ```
  <?php
  Function my_initializer($context) {
      echo 'hello world' . PHP_EOL;
      }
  ?>
  ```
  
 
#### 相关文档
除使用控制台外，函数工作流支持通过API的方式管理函数的生命周期，详情请参见[函数生命周期管理API](https://support.huaweicloud.com/api-functiongraph/FunctionLifecycleManagement.html)。
