¿Cómo puedo hacer que los manejadores de señales Django no fallen silenciosamente cuando se encuentra una excepción en el manejador de señales?

¿Cómo hago para que los manejadores de señales Django no fallen silenciosamente cuando se encuentra una excepción en el manejador?

¿Hay un lugar donde todos estos errores se registran al usar el servidor de desarrollo ?

¿Por qué los manejadores de señales django fallan silenciosamente de todos modos? ¿No es contra una de las líneas en el Zen de Python ?

Zen de Python dice claramente …

Los errores nunca deben pasar en silencio.

Los convierte en una pesadilla para depurar. Todo lo que puedes ver es que la señal no se está disparando …

Encontré esta pregunta pero la respuesta es inútil para mí, ya que es muy específica a la pregunta (la respuesta sugiere usar pyflakes, ya uso pydev que hace un análisis estático satisfactorio)

Cuando uso el manage.py shell obtengo una excepción no detectada al crear manualmente una FollowTable desde su ejemplo. Sin embargo, las excepciones no detectadas durante una solicitud no aparecen en el terminal (aparte de mostrar que se devolvieron 500), en su lugar, se muestran en el navegador. Si está utilizando JavaScript para realizar solicitudes, es posible que desee buscar en las herramientas de desarrollador de firebug / chrome para ver si está devolviendo un rastreo.

Parece que alguien más ha respondido cómo obtener las trazas para mostrar en la consola: https://stackoverflow.com/a/5886462/725359

Parecía trabajar para mí. Hice lo siguiente:

  1. Se agregó la clase ExceptionLoggingMiddleware a my_app/__init__.py
  2. Se agregó 'my_app.ExceptionLoggingMiddleware' a MIDDLEWARE_CLASSES en settings.py
  3. Reinicie el servidor de desarrollo

Sí, los errores nunca deben fallar en silencio.

Sí, pienso como tú: los errores nunca deben fallar en silencio

Las señales incorporadas no fallan silenciosamente

Las señales incorporadas de Django no fallan en silencio porque usan send()

Solo send_robust() ignora las excepciones

Documentos de send_robust ()

send_robust () captura todos los errores derivados de la clase de Excepción de Python, y asegura que todos los receptores sean notificados de la señal. Si se produce un error, la instancia de error se devuelve en el par de tuplas para el receptor que generó el error.

Conclusión

Dado que django no usa send_robust() , investiga dónde se llama. Supongo que está en su código fuente o en el código de una aplicación de terceros.