要创建子细分市场,aws-xray需要打开一个有效的细分市场。默认情况下,远程lambda执行会为您打开一个段,您只需添加子段,但在本地运行时,我们需要在添加子段之前手动打开段。
我可以把东西放在try-except块中,以便仅在段可用时启动子段,但有没有什么方法可以检查段是否打开。
现在正在处理以下内容:
try:
xray_recorder.current_segment()
except:
xray_recorder.begin_segment(self.segment_name)发布于 2018-08-28 05:54:42
没有专门的方法来检查是否有开放的段/子段,但您发布的代码片段肯定工作得很好。
在本地测试Lambda函数的一种更好的方法是模仿Lambda容器的行为,这样您插入指令的Lambda函数在本地和实际Lambda中的行为完全相同。
你可以在https://github.com/aws/aws-xray-sdk-python/blob/master/aws_xray_sdk/core/lambda_launcher.py#L24这里查看源代码。基本上,Lambda容器将设置环境变量LAMBDA_TASK_ROOT,以便SDK知道它“在Lambda内部运行”,并基于https://github.com/aws/aws-xray-sdk-python/blob/master/aws_xray_sdk/core/lambda_launcher.py#L94创建外观段。您可以将跟踪头部设置为不对任何子段进行采样,这样SDK就不会生成数据。
这取决于您的本地测试的用途。解决方案可能会有所不同,这取决于您是想要存根X-Ray SDK来测试您的功能,还是想要测试X-Ray仪器并需要在X-Ray控制台上查看实际数据。
https://stackoverflow.com/questions/52002849
复制相似问题