本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
修補程式庫來檢測下游呼叫
若要測量下游呼叫,請使用 Python 專用的 X-Ray SDK 來修補應用程式所使用的程式庫。適用於 Python 的 X 射線 SDK 可以修補以下庫。
支援的程式庫
-
pynamodb
— 儀器版本的亞馬遜動態 B 用戶端。 -
aiobotocore
,aioboto3
— 儀器異步-適用於 Python 客戶端的 SDK 的集成版本。 -
httplib
,http.client
— 儀器低級 HTTP 客戶端和使用它們的更高級別庫。 -
sqlite3
— 儀器客戶端。 -
mysql-connector-python
— 儀器 MySQL 客戶端. -
pg8000
— 儀器純蟒接口。 -
psycopg2
— 儀器資料庫配接器。 -
pymongo
— 儀器蒙古數據庫的客戶端. -
pymysql
— 儀器PyMy基於 SQL 的客戶端,適用於 MySQL 和瑪麗亞德。
當您使用已修補的程式庫時,Python 的 X-Ray SDK 會建立呼叫的子區段,並記錄來自要求和回應的資訊。區段必須透過軟體開發套件中介軟體或 AWS Lambda 供軟體開發套件使用,以建立子區段。
注意
若您使用 SQLAlchemy ORM,您可以透過匯入 SQLAlchemy 工作階段和查詢類別的軟體開發套件版本,來檢測您的 SQL 查詢。如需說明,請參閱使用 SQLAlchemy ORM
若要修補所有可用程式庫,請使用 aws_xray_sdk.core
中的 patch_all
函數。有些程式庫 (例如 httplib
和 urllib
) 可能需要呼叫 patch_all(double_patch=True)
以啟用雙重修補。
範例 main.py — 修補所有支援的程式庫
import boto3
import botocore
import requests
import sqlite3
from aws_xray_sdk.core import xray_recorder
from aws_xray_sdk.core import patch_all
patch_all()
若要修補單一程式庫,請以該程式庫名稱的元組來呼叫 patch
。若要執行這個作業,您將需要提供單一個元素清單。
範例 main.py — 修補程式特定程式庫
import boto3
import botocore
import requests
import mysql-connector-python
from aws_xray_sdk.core import xray_recorder
from aws_xray_sdk.core import patch
libraries = (['botocore'])
patch(libraries)
注意
在某些情況下,您用來修補程式庫的鍵會與程式庫名稱不相符。有些鍵會做為一或多個程式庫的別名。
程式庫別名
-
httplib
—httplib
和http.client
-
mysql
–mysql-connector-python
追蹤非同步工作的內容
對於asyncio
整合式程式庫,或至為非同步函數建立子區段時,您還必須使用異步上下文為 Python 配置 X 射線 SDK。匯入AsyncContext
類並將其實例傳遞給 X 射線記錄器。
注意
Web 架構支援程式庫,例如 AIOHTTP,將不會經由 aws_xray_sdk.core.patcher
模組獲得處理。它們不會出現在支援程式庫的 patcher
目錄中。
範例 main.py — 安全修補程式 3
import asyncio
import aioboto3
import requests
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())
from aws_xray_sdk.core import patch
libraries = (['aioboto3'])
patch(libraries)