本文介绍Web Server模式的Custom Container Runtime实现函数实例生命周期回调的方法。

使用限制

非Web Server模式的Custom Container Runtime不支持Initializer、PreFreeze和PreStop三种回调。函数计算仅在客户端主动取消请求时,向相关实例发送SIGTERM信号,如有需要,您可以在容器业务逻辑内自行捕获SIGTERM信号。

回调方法

当您实现并配置函数实例生命周期回调后,函数计算将在相关实例生命周期事件发生时调用对应的回调程序。函数实例生命周期涉及Initializer、PreFreeze和PreStop三种回调。更多信息,请参见函数实例生命周期回调

下文介绍Initializer回调方法,PreFreeze和PreStop回调方法与之相同。

Path输入请求期望的响应
(可选)POST /initialize

请求体:无。

请求头:Common Request Headers。具体信息,请参见函数计算公共请求头

响应体:函数Initializer的返回值。
StatusCode
  • 200:成功状态。
  • 404:失败状态。
Python语言中关于initialize的示例代码如下:
@app.route('/initialize', methods=['POST'])
def init_invoke():
    rid = request.headers.get(x-fc-request-id)
    print("FC Initialize Start RequestId: " + rid)
    # do your things
    print("FC Initialize End RequestId: " + rid)
    return "OK"
(可选)GET /pre-freeze响应体:函数PreFreeze的返回值。
StatusCode
  • 200:成功状态。
  • 404:失败状态。
(可选)GET /pre-stop响应体:函数PreStop的返回值。
StatusCode
  • 200:成功状态。
  • 404:失败状态。
如果您想在Custom Runtime中使用Initializer回调方法,您需要在您的HTTP Server中实现Path为/initialize和Method为POST的对应逻辑。示例代码,请参见上表中关于initialize的示例代码。
重要 创建的函数不设置Initializer时,无需实现/initialize。此时,即使HTTP Server实现了/initialize,代码中的/initialize逻辑也无法被调用执行。