本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用適用於 Python 的 X-Ray 開發套件
子段擴展追蹤的段,詳細介紹了為了服務請求而完成的工作。每次與分析客户端進行呼叫時,X-Ray SDK 都會記錄在子段中生成的信息。您可以創建其他子段來對其他子段進行分組、測量代碼部分的性能或記錄註釋和元數據。
若要管理子區段,請使用 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"
}
},