기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
다운스트림 호출 구성을 위해 라이브러리 패치
다운스트림 호출을 구성하려면 Python용 X-Ray SDK를 사용하여 애플리케이션이 사용하는 라이브러리를 패치합니다. Python용 X-Ray SDK는 다음 라이브러리를 패치할 수 있습니다.
지원되는 라이브러리
-
pynamodb
– Amazon DynamoDB 클라이언트의 PynamoDB 버전을 구성합니다. -
aiobotocore
,aioboto3
— Python 클라이언트용 비동기통합 SDK 버전을 구성합니다. -
httplib
,http.client
– 하위 HTTP 클라이언트와 이러한 클라이언트를 사용하는 상위 라이브러리를 구성합니다. -
sqlite3
– SQLite 클라이언트를 구성합니다. -
mysql-connector-python
– MySQL 클라이언트를 구성합니다. -
pg8000
– 순수 Python을 구성합니다. -
psycopg2
– PostgreSQL 데이터베이스 어댑터를 구성합니다. -
pymongo
– MongoDB 클라이언트를 구성합니다. -
pymysql
– MySQL 및 MariaDB 클라이언트에 기반한 PyMySQL을 구성합니다.
패치된 라이브러리를 사용하면 Python용 X-Ray SDK는 직접 호출에 대한 하위 세그먼트를 생성하고 요청 및 응답의 정보를 기록합니다. SDK가 SDK 미들웨어 또는 AWS Lambda에서 하위 세그먼트를 생성하려면 세그먼트를 사용할 수 있어야 합니다.
참고
SQLAlchemy ORM을 사용하는 경우, SQLAlchemy 세션의 SDK 버전과 쿼리 클래스를 가져와서 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-Ray SDK도 구성해야 합니다. AsyncContext
클래스를 가져와서 이 클래스의 인스턴스를 X-Ray 레코더에 전달합니다.
참고
AIOHTTP와 같은 웹 프레임워크 지원 라이브러리는 aws_xray_sdk.core.patcher
모듈을 통해 처리되지 않습니다. 이들은 지원되는 라이브러리의 patcher
카탈로그에 나타나지 않습니다.
예 main.py – aioboto3 패치
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)