使用适用于 Python 的 X-Ray 开发工具包生成自定义子分段 - Amazon X-Ray
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用适用于 Python 的 X-Ray 开发工具包生成自定义子分段

子分段可为跟踪的分段扩展为了给请求提供服务而已完成的工作的详细信息。每次使用已检测的客户端进行调用时,X-Ray 开发工具包在子分段中记录生成的信息。您可以创建其他子分段来分组其他子分段,来度量某个代码段的性能如何,或是来记录注释和元数据。

要管理子分段,请使用 begin_subsegmentend_subsegment 方法。

例 main.py - 自定义子分段
from aws_xray_sdk.core import xray_recorder subsegment = xray_recorder.begin_subsegment('annotations') subsegment.put_annotation('id', 12345) xray_recorder.end_subsegment()

要为同步函数创建子分段,请使用 @xray_recorder.capture 装饰器。您可以将子分段名称传递到捕获函数,或者省略以使用函数名称。

例 main.py - 函数子分段
from aws_xray_sdk.core import xray_recorder @xray_recorder.capture('## create_user') def create_user(): ...

对于异步函数,请使用 @xray_recorder.capture_async 装饰器,并将异步上下文传递到记录器。

例 main.py - 异步函数子分段
from aws_xray_sdk.core.async_context import AsyncContext from aws_xray_sdk.core import xray_recorder xray_recorder.configure(service='my_service', context=AsyncContext()) @xray_recorder.capture_async('## create_user') async def create_user(): ... async def main(): await myfunc()

当您在分段或者其他子分段中创建子分段时,适用于 Python 的 X-Ray 开发工具包会为其生成 ID 并记录开始时间和结束时间。

例 包含元数据的子分段
"subsegments": [{ "id": "6f1605cd8a07cb70", "start_time": 1.480305974194E9, "end_time": 1.4803059742E9, "name": "Custom subsegment for UserModel.saveUser function", "metadata": { "debug": { "test": "Metadata string from UserModel.saveUser" } },