• /
  • EnglishEspañol日本語한국어Português
  • Inicia sesiónComenzar ahora

Te ofrecemos esta traducción automática para facilitar la lectura.

En caso de que haya discrepancias entre la versión en inglés y la versión traducida, se entiende que prevalece la versión en inglés. Visita esta página para obtener más información.

Crea una propuesta

background_task (API del agente Python)

Sintaxis

newrelic.agent.background_task(application=None, name=None, group=None)

Se utiliza para instrumentar una tarea en segundo plano u otra transacción no web de tiempo de ejecución finito.

Descripción

Este decorador de Python se puede utilizar para instrumentar tareas en segundo plano u otras transacciones sin red de tiempo de ejecución finito. Por lo general, esto se utiliza para instrumentar actividades no web, como procesos de trabajo, sistemas basados en trabajos y secuencias de comandos independientes. Las tareas marcadas como en segundo plano se muestran como transacción no web en la UI de APM y separadas de transacción web.

Importante

Si una función aún no está instrumentada, puede usar function_trace() para crear una traza de función para esa función dentro de una tarea en segundo plano. O puede utilizar el archivo de configuración para instrumentar funciones no instrumentadas.

Si se llama a una función que utiliza el decorador de tareas en segundo plano dentro del contexto de una transacción web, entonces la transacción web se marca como una tarea en segundo plano. La medición del tiempo empleado comienza cuando se inicia la transacción web original.

Si no puede utilizar el decorador, uno de estos formatos de llamada puede resultar más útil:

  • The context manager

    : Si las tareas a monitorear solo se determinarán en tiempo de ejecución (y no en el momento de importación), puede usar el administrador de contexto BackgroundTask para encapsular directamente la ejecución de un bloque de código. (Este es el administrador de contexto utilizado por BackgroundTaskWrapper).

  • The wrapper

    : Si sabe de antemano dónde están las funciones específicas que desea rastrear, puede utilizar el decorador background_task . Pero si no conoce todas las funciones que deben trazarse (por ejemplo, si se buscan dinámicamente como parte de un sistema de enrutamiento), entonces debe usar BackgroundTaskWrapper para ajustar la función en ese momento. de inscripción o en el momento de la convocatoria.

  • The path-based wrapper

    : El formulario contenedor basado en ruta es wrap_background_task.

Para obtener más información sobre las diferencias y los usos de estas formas de funciones, consulte Formatos de llamada de variables.

Parámetros

Parámetro decorador y administrador de contexto

newrelic.agent.background_task(application=None, name=None, group=None)
newrelic.agent.BackgroundTask(application=None, name=None, group=None)

Parámetro para estas llamadas:

Parámetro

Descripción

application

Instancia de aplicación

Requerido. La aplicación bajo la cual se reportarán los datos. El valor predeterminado es None. Si se deja sin valor, se utilizará la aplicación especificada en la configuración del agente (archivo de configuración o variable de entorno).

Para obtener más información sobre cómo generar un objeto de aplicación, consulte el método application() .

La aplicación, incluso si se especifica, aún se puede anular si newrelic.app_name está definido en el diccionario de entorno de solicitud por aplicación WSGI.

name

cadena

Requerido. El nombre de la transacción. El valor predeterminado es None. De forma predeterminada, el nombre será el nombre de la función a la que se aplicó el decorador, pero puede anularlo proporcionando este nombre.

group

cadena

Opcional. El group representa la estructura de nombres para el parámetro name . Esto se utiliza en la UI para establecer el tipo de transacción.

Si no se proporciona, el grupo tiene como valor predeterminado Function con la expectativa de que el nombre tenga el formato module:class.function o module:function y represente el nombre de la función que se está ejecutando. Si está creando un grupo personalizado, le recomendamos que le ponga el prefijo Python/.

Parámetro de envoltura:

newrelic.agent.BackgroundTaskWrapper(wrapped, application=None, name=None, group=None)

BackgroundTaskWrapper toma los mismos parámetros que el decorador background_task y este parámetro wrapped adicional:

Parámetro

Descripción

wrapped

método

Requerido. El método para ser trazada.

Parámetro basado en ruta:

newrelic.agent.wrap_background_task(module, object_path, application=None, name=None, group=None)

wrap_background_task toma el mismo parámetro que el decorador background_task más estos parámetros adicionales:

Parámetro

Descripción

module

módulo o cadena

Requerido. El módulo que contiene la función/actividad no web que está instrumentado.

object_path

cadena

Requerido. La ruta al módulo.

Ejemplos

background_task ejemplo de decorador

A continuación se muestra un ejemplo del uso del decorador background_task :

@newrelic.agent.background_task()
def task():
...

BackgroundTask ejemplo de administrador de contexto

Un ejemplo de uso de BackgroundTask:

application = newrelic.agent.application()
name = newrelic.agent.callable_name(task)
with BackgroundTask(application, name):
task()

Aquí hay otro ejemplo con más parámetros:

application = newrelic.agent.register_application(timeout=10.0)
def execute_task(task_name):
with newrelic.agent.BackgroundTask(application, name=task_name, group='Task'):
...

BackgroundTaskWrapper ejemplo

Un ejemplo de uso de BackgroundTaskWrapper:

task = newrelic.agent.BackgroundTaskWrapper(get_next_task())
result = task(*args, **kwargs)

En este ejemplo, si esta llamada se realizó en una transacción web que está siendo monitoreada por un agente, la llamada reclasificará la transacción web como una tarea en segundo plano. Sin embargo, si la llamada se realizó en un subproceso o rutina en segundo plano, entonces se iniciaría la grabación de una nueva transacción de tarea en segundo plano que rastrea lo que ocurre hasta que regresa la llamada.

Resolución de problemas

Si la transacción de la tarea en segundo plano no aparece en la UI, esto podría deberse a que la transacción creada por la tarea en segundo plano nunca se cerró o la tarea duró demasiado. Si una tarea en segundo plano se ejecuta durante más de 20 minutos, el servidor la descarta porque se considera demasiado antigua para conservarla. Las tareas en segundo plano no deben ejecutarse durante más de 20 minutos y, si lo hacen, deben dividirse en varias tareas en segundo plano.

Copyright © 2024 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.