本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用X-Ray SDK for Python生成自定义子分段
子分段会扩展跟踪的分段并提供有关完成任务的详细信息,以便处理请求。每次您通过已分析的客户端进行调用时,X-Ray 开发工具包都将记录在子分段中生成的信息。您可以创建更多子分段以分组其他子分段、测量代码段的性能或记录注释和元数据。
要管理子分段,请使用 begin_subsegment
和 end_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()
当您在分段或者其他子分段中创建子分段时,X-Ray SDK for Python将为其生成 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"
}
},