Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Generazione di sottosegmenti personalizzati con l'SDK X-Ray per Python
I sottosegmenti estendono una tracciasegmentocon dettagli sul lavoro svolto per soddisfare una richiesta. Ogni volta che si effettua una chiamata con un client strumentato, l'SDK X-Ray registra le informazioni generate in un sottosegmento. È possibile creare sottosegmenti aggiuntivi per raggruppare altri segmenti secondari, per misurare le prestazioni di una sezione di codice o per registrare annotazioni e metadati.
Per gestire i sottosegmenti, utilizza i metodi begin_subsegment
e end_subsegment
.
Esempio main.py — sottosegmento personalizzato
from aws_xray_sdk.core import xray_recorder
subsegment = xray_recorder.begin_subsegment('annotations')
subsegment.put_annotation('id', 12345)
xray_recorder.end_subsegment()
Per creare un sottosegmento personalizzato per una funzione sincrona, utilizza il decoratore @xray_recorder.capture
. Puoi passare un nome per il sottosegmento alla funzione di acquisizione o ometterlo per utilizzare il nome della funzione.
Esempio main.py sottosegmento funzione
from aws_xray_sdk.core import xray_recorder
@xray_recorder.capture('## create_user')
def create_user():
...
Per una funzione asincrona, utilizza il decoratore @xray_recorder.capture_async
e passa un contesto async al registratore.
Esempio main.py — sottosegmento di funzione asincrona
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 crei un sottosegmento all'interno di un segmento o di un altro sottosegmento, l'SDK X-Ray per Python genera per esso un ID e memorizza l'ora di inizio e fine.
Esempio Sottosegmento con metadati
"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"
}
},