我有一个 Flask 应用程序作为使用 Zappa 部署的 AWS Lambda 函数运行,并希望激活 X-Ray 以获取有关不同函数的更多信息。
使用 Zappa 激活 X-Ray 非常简单——只需要在 zappa-settings.json 中添加这一行:
"xray_tracing": true
此外,我安装了AWS X-Ray Python 开发工具包并为一些函数添加了一些装饰器,如下所示:
@xray_recorder.capture()
当我将其部署为 Lambda 函数时,一切正常。问题是在本地使用系统,无论是在运行测试时还是在本地服务器中运行 Flask 而不是作为 lambda 函数时。
当我使用在测试中或通过本地服务器修饰的任何函数时,将引发以下异常:
aws_xray_sdk.core.exceptions.exceptions.SegmentNotFoundException: cannot find the current segment/subsegment, please make sure you have a segment open
这当然是有道理的,因为 AWS Lambda 处理段的创建。
有什么好的方法可以在本地停用捕获吗?这将很有用,例如,对于我想在 X-Ray 中观看的功能在本地运行单元测试。