Si está utilizando Celery como un sistema de cola de tareas distribuido, puede usar el agente Python para registrar los procesos de Celery como transacción no web.
Para que el agente Python funcione con Celery, primero siga las instrucciones de instalación del agente para instalar, configurar y probar el agente. Luego siga estas instrucciones específicas para el Celery.
Ejecutar Celery
El comando que utilice para ejecutar Celery con el agente depende de su versión de Celery y de su configuración específica.
Seleccione el nombre de la aplicación
La configuración app_name
en el archivo de configuración del agente Python establece el nombre de la aplicación que se muestra en la UI de New Relic.
- Si su agente de Python monitorea las tareas de Celery y configura
app_name
con el mismo valor utilizado en elapp_name
de su agente de aplicación, los datos de ambas fuentes se combinarán en la UI con ese nombre. - Si establece nombres diferentes, los datos aparecen por separado en la UI como dos nombres diferentes.
Al configurar varios nombres de aplicaciones en los archivos de configuración del agente, puede monitor tanto los datos combinados como los datos segregados. A continuación se muestra una forma común de hacer esto, usando una aplicación Django como ejemplo:
Ignorar errores de reintento de tarea
Al utilizar Celery, es posible que una tarea falle y genere una excepción celery.exceptions:Retry
o celery.exceptions:RetryTaskError
. La excepción depende de qué versión de Celery se utilice.
Para ignorar estos errores, configúrelo desde la UI de New Relic Application settings o desde el archivo de configuración del agente. Los cambios UI anulan los cambios en el archivo de configuración según las reglas de precedencia de configuración.
Para utilizar la configuración de error omitida desde la UI:
Desde
, seleccione
APM > (select an app) > Settings > Application
.
Seleccione
Server-side agent configuration
.
Desde
Error collection
, ingresa los errores que deseas ignorar, separados por comas.
Para ignorar estos errores usando el archivo de configuración del agente, use la configuración ignore_errors
y una lista de excepciones separadas por espacios:
error_collector.ignore_errors = celery.exceptions:Retry celery.exceptions:RetryTaskError
Resolución de problemas
Cuando un proceso de trabajo de Celery finaliza repentinamente, el agente no puede completar su proceso de apagado normal, lo que significa que no se envía su carga útil de datos final. Esto da como resultado que el agente informe menos transacciones de Celery de las esperadas o ninguna transacción en absoluto.
Esto puede ocurrir cuando se utiliza la configuración CELERYD_MAX_TASKS_PER_CHILD
, que define la cantidad máxima de tareas que un proceso de trabajo del grupo puede ejecutar antes de ser reemplazado por uno nuevo. Si se utiliza, el trabajador es cerrado por la fuerza cuando se alcanza ese límite, lo que significa que el agente no registra esos datos. Por ejemplo, si MAX_TASKS_PER_CHILD = 1
, esto da como resultado que no se informen datos.
La forma de solucionar este problema dependerá de por qué desea utilizar el límite MAX_TASKS_PER_CHILD
en su aplicación.
- Para permitir el proceso de apagado normal, vuelva a la configuración predeterminada sin límite.
- Para reducir el impacto del problema, aumente el límite de
MAX_TASKS_PER_CHILD
.
Importante
Para la versión 3.2.2.94 o superior, el agente Python se cerrará cuando se alcance el límite MAX_TASKS_PER_CHILD
. no se perderán los datos.
Importante
Monitorear el proceso principal de Celery no es posible con el agente, solo puede monitor los procesos de trabajo. Ver Activar advertencia de aplicación