Flask集成flask_healthz健康检查提示无法导入检测函数如何解决
报错原因
flask_healthz需要通过配置的字符串路径导入健康检查函数,你当前配置中填写的app.liveness、app.readiness和实际的函数所在路径不匹配:你代码中的liveness、readiness是全局函数,没有绑定到app实例上,框架按配置路径找不到对应函数,就会抛出导入失败的报错。- 如果你是直接执行
python 脚本名.py启动服务,当前运行的主模块名为__main__,并非app,也会导致路径匹配失败。
解决方案
以下两种方案二选一即可:
方案1:修改配置路径
直接用__name__动态适配当前模块名,无需改动其他代码:
app.config.update( HEALTHZ = { "live": f"{__name__}.liveness", "ready": f"{__name__}.readiness", } )
如果你的脚本固定直接本地运行,也可以将路径写死为__main__.liveness、__main__.readiness。
方案2:绑定函数到app实例
将定义好的健康检查函数赋值给app实例的属性,适配你原来的配置:
# liveness、readiness函数定义完成后添加如下代码 app.liveness = liveness app.readiness = readiness # 原有配置保持不变即可 app.config.update( HEALTHZ = { "live": "app.liveness", "ready": "app.readiness", } )
修改完成后重启服务,再次调用健康检查接口即可正常返回OK响应。
内容的提问来源于stack exchange,提问作者Amin Merati
相关产品推荐
相关产品推荐

