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

回调方法

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

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

请求体:无。

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

响应体:函数Initializer的返回值。
StatusCode
  • 2xx:成功状态。
  • 非2xx:失败状态。
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"
Python语言中函数执行报错的示例代码如下:
@app.route('/initialize', methods=['POST'])
def init():
    raise Exception("hahaha")
    return "OK", 200, []
@app.route('/initialize', methods=['POST'])
def init():
    return "OK", 404, []
(可选)GET /pre-freeze响应体:函数PreFreeze的返回值。
StatusCode
  • 2xx:成功状态。
  • 非2xx:失败状态。
(可选)GET /pre-stop响应体:函数PreStop的返回值。
StatusCode
  • 2xx:成功状态。
  • 非2xx:失败状态。
如果您想在Custom Runtime中使用Initializer回调方法,您只需在您的HTTP Server中实现Path为/initialize和Method为POST的对应逻辑即可。示例代码,请参见上表中关于initialize的示例代码。
重要 如果创建的函数不设置Initializer,就无需实现/initialize。此时,即使HTTP Server实现了/initialize,代码中的/initialize逻辑也无法被调用执行。

PreFreeze和PreStop回调方法的使用,同Initializer回调方法。

回调错误码

错误码ID解释说明
400
  • 函数Initializer回调失败返回400或404,不会重新发送请求,但系统会继续重试直到调用成功为止。
  • 函数PreFreeze和PreStop回调失败返回400或404,不会影响函数实例的冷冻和停止。
404
500函数计算重启实例。