使用适用于 Python 的 X-Ray 开发工具包生成自定义子分段
子分段可为跟踪的分段扩展为了给请求提供服务而已完成的工作的详细信息。每次使用已检测的客户端进行调用时,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()
当您在分段或者其他子分段中创建子分段时,适用于 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"
}
},