Sintaxis
newrelic.agent.external_trace(library, url, method=None)Reportar llamadas a servicios externos como segmentos de traza de la transacción.
Descripción
external_trace se utiliza para agregar más detalles a su traza de la transacción en forma de segmentos adicionales. Cualquier llamada reportada con external_trace aparecerá en la pestaña externos en APM. external_trace devuelve una parte de ExternalTraceWrapper que se puede usar como decorador para una función que llama a un servicio externo.
El decorador external_trace se puede utilizar en generadores y corrutinas con la versión del agente 2.102.0.85 o superior. El tiempo de estos objetos comienza cuando comienza el consumo y finaliza cuando el objeto se agota o sale del alcance. Este es un cambio con respecto a versiones anteriores donde la métrica representaba el tiempo necesario para crear el generador o el objeto de rutina.
Si no puede utilizar el decorador en su aplicación, puede utilizar uno de estos otros formatos de llamada:
The context manager
: El formulario del administrador de contexto es
ExternalTrace.The wrapper
: El formulario contenedor es
ExternalTraceWrapper. Se puede utilizar para devolver una función envuelta sin el uso de un decorador.The path-based wrapper
: El formulario contenedor basado en ruta es
wrap_external_trace. Esto aplica elExternalTraceWrappera un objeto determinado mediante parches de mono. Esto toma los mismos parámetros que el decorador más un parámetromoduleyobject_pathadicional.
Para obtener una explicación de los usos de estos diferentes formatos de llamadas, consulte Diferentes formatos de llamadas. Consulte Ejemplos para ver ejemplos de llamadas.
Parámetros
Parámetros para external_trace
newrelic.agent.external_trace(library, url, method=None)El decorador external_trace utiliza estos parámetros:
Parámetro  | Descripción  | 
|---|---|
 cadena o función  | Requerido. El nombre (o tipo) de la biblioteca externa en uso. Pase una cadena que lo defina o una función que lo devuelva.  | 
 cadena o función  | Requerido. La URL que ha sido solicitada por la llamada a la biblioteca. Pase una cadena que lo defina o una función que lo devuelva.  | 
 cadena o función  | Opcional. El método que define el tipo de llamada que se realiza. Suelen ser   | 
Parámetro para seguimiento externo
newrelic.agent.ExternalTrace(library, url, method=None)El administrador de contexto ExternalTrace toma todos los parámetros tomados por external_trace.
Parámetro para ExternalTraceWrapper
newrelic.agent.ExternalTraceWrapper(wrapped, library, url, method=None)El ExternalTraceWrapper toma todos los mismos parámetros que el decorador además de un parámetro wrapped inicial:
Parámetro  | Descripción  | 
|---|---|
 función  | Requerido. La función de llamada externa al atributo del tiempo externo.  | 
parámetro para wrap_external_trace
newrelic.agent.wrap_external_trace(module, object_path, library, url, method=None)El wrap_external_trace toma todos los parámetros que hace el decorador además de un parámetro module y un parámetro object_path :
Parámetro  | Descripción  | 
|---|---|
 objeto  | Requerido. El módulo que contiene el objeto que se va a envolver.  | 
 cadena  | Requerido. La ruta al objeto que se va a envolver.  | 
Valores de retorno
external_trace devuelve un ExternalTraceWrapper() parcial.
Ejemplos
ejemplo de seguimiento_externo
Un ejemplo de uso de external_trace:
@external_trace('library', 'http://example.com', 'get')def foo():    passUn ejemplo del uso external_trace en una corrutina nativa:
@external_trace('library', 'http://example.com', 'get')async def foo():    passEjemplo de seguimiento externo
Un ejemplo de uso del administrador de contexto ExternalTrace :
def fetch_example_dot_com():    with ExternalTrace('library', 'http://example.com', 'get'):        passEjemplo de ExternalTraceWrapper
Un ejemplo de uso de ExternalTraceWrapper:
wrapped_fetch_example_dot_com = newrelic.agent.ExternalTraceWrapper(fetch_example_dot_com, 'library', 'http://example.com', 'get')
response = wrapped_fetch_example_dot_com()ejemplo de wrap_external_trace
Un ejemplo del uso del contenedor basado en ruta wrap_external_trace :
wrap_external_trace('module', 'Foo.bar', 'library', 'http://example.com', 'get')