Aplicar patches a bibliotecas para instrumentar chamadas subsequentes - AWS X-Ray

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Aplicar patches a bibliotecas para instrumentar chamadas subsequentes

Para instrumentar chamadas subsequentes, use o X-Ray SDK para Python para aplicar patches às bibliotecas usadas pela aplicação. O X-Ray SDK para Python pode corrigir as bibliotecas a seguir.

Bibliotecas compatíveis
  • botocore, boto3: instrumentar clientes do AWS SDK for Python (Boto).

  • pynamodb: instrumentar a versão do PynamoDB de clientes do Amazon DynamoDB.

  • aiobotocore, aioboto3: instrumentar as versões integradas ao asyncio de clientes do SDK para Python.

  • requests, aiohttp: instrumentar clientes HTTP de nível superior.

  • httplib, http.client: instrumentar clientes HTTP de nível inferior e as bibliotecas de nível superior que os utilizam.

  • sqlite3: instrumentar clientes do SQLite.

  • mysql-connector-python: instrumentar clientes do MySQL.

  • pg8000: instrumentar a interface PostgreSQL Pure-Python.

  • psycopg2: instrumentar o adaptador de banco de dados PostgreSQL.

  • pymongo: instrumentar clientes do MongoDB.

  • pymysql: instrumentar clientes baseados em PyMySQL para MySQL e MariaDB.

Quando você usa uma biblioteca com patches aplicados, o X-Ray SDK para Python cria um subsegmento para a chamada e grava informações da solicitação e da resposta. Um segmento deve estar disponível para o SDK para criar o subsegmento, no middleware do SDK ou no AWS Lambda.

nota

Se você usar o SQLAlchemy ORM, poderá instrumentar suas consultas SQL importando a versão para SDK da sessão e das classes de consulta do SQLAlchemy. Consulte Como usar o SQLAlchemy ORM para obter instruções.

Para aplicar patch a todas as bibliotecas disponíveis, use a função patch_all em aws_xray_sdk.core. Algumas bibliotecas, como httplib e urllib, podem precisar habilitar a aplicação de patch dupla chamando patch_all(double_patch=True).

exemplo main.py: aplicar patch a todas as bibliotecas compatíveis
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()

Para aplicar um patch a uma única biblioteca, chame patch com uma tupla do nome da biblioteca. Para isso, você precisará fornecer uma única lista de elementos.

exemplo main.py: aplicar patch a bibliotecas específicas
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)
nota

Em alguns casos, a chave que você usa para aplicar um patch a uma biblioteca não corresponde ao nome da biblioteca. Algumas chaves servem como aliases para uma ou mais bibliotecas.

Aliases de bibliotecas

Rastrear contexto para trabalhos assíncronos

Para bibliotecas integradas asyncio ou para criar subsegmentos para funções assíncronas, você também deve configurar o X-Ray SDK para Python com um contexto assíncrono. Importe a classe AsyncContext e passe um exemplo dela para o gravador do X-Ray.

nota

As bibliotecas de suporte a framework da Web, como AIOHTTP, não são tratadas pelo módulo aws_xray_sdk.core.patcher. Elas não serão exibidas no catálogo de patcher de bibliotecas com suporte.

exemplo main.py: aplicar patch a 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)