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á.
Gerar subsegmentos personalizados com o X-Ray SDK para Python
Os subsegmentos estendem o segmento de um rastreamento com detalhes sobre o trabalho realizado para atender a uma solicitação. Sempre que você faz uma chamada com um cliente instrumentado, o X-Ray SDK registra as informações geradas em um subsegmento. Você pode criar subsegmentos adicionais para agrupar outros subsegmentos, medir o desempenho de uma seção do código ou registrar anotações e metadados.
Para gerenciar subsegmentos, use os métodos begin_subsegment
e end_subsegment
.
exemplo main.py: subsegmento personalizado
from aws_xray_sdk.core import xray_recorder
subsegment = xray_recorder.begin_subsegment('annotations')
subsegment.put_annotation('id', 12345)
xray_recorder.end_subsegment()
Para criar um subsegmento para uma função síncrona, use o decorador @xray_recorder.capture
. Você pode passar um nome para o subsegmento para a função de captura ou deixá-lo usar o nome da função.
exemplo main.py: subsegmento de função
from aws_xray_sdk.core import xray_recorder
@xray_recorder.capture('## create_user')
def create_user():
...
Para uma função assíncrona, use o decorador @xray_recorder.capture_async
e passe um contexto assíncrono para o gravador.
exemplo main.py: subsegmento de função assíncrona
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()
Quando você cria um subsegmento dentro de um segmento ou outro subsegmento, o X-Ray SDK para Python gera um ID para ele e registra a hora de início e de término.
exemplo Subsegmento com metadados
"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"
}
},