Python 让芹菜使用Django异常中间件

Python 让芹菜使用Django异常中间件,python,django,celery,django-celery,Python,Django,Celery,Django Celery,如何强制芹菜使用自定义中间件来添加额外的调试信息并控制用于发送错误电子邮件的电子邮件帐户 我正在使用一个定制的Django来添加额外的调试信息并发送错误电子邮件。它对于标准的Django 500错误非常有效,但芹菜似乎忽略了所有Django中间件。其效果是芹菜中发生的任何错误都只报告非常有限的回溯,并使用默认的电子邮件连接,而不是用于报告错误的特殊连接。您应该向芹菜记录器添加邮件管理员处理程序,如下所示: LOGGING = { ... 'loggers': { 'django.re

如何强制芹菜使用自定义中间件来添加额外的调试信息并控制用于发送错误电子邮件的电子邮件帐户


我正在使用一个定制的Django来添加额外的调试信息并发送错误电子邮件。它对于标准的Django 500错误非常有效,但芹菜似乎忽略了所有Django中间件。其效果是芹菜中发生的任何错误都只报告非常有限的回溯,并使用默认的电子邮件连接,而不是用于报告错误的特殊连接。

您应该向芹菜记录器添加
邮件管理员
处理程序,如下所示:

LOGGING = {

...

'loggers': {
    'django.request': {
        'handlers': ['mail_admins'],
        'level': 'ERROR',
        'propagate': False,
    },
    'celery': {
        'level': 'INFO',
        'handlers': ['mail_admins'],
        'propagate': True (or False :) ),
    },
...

顺便说一句,我用它来记录错误(Django和芹菜),这太好了

您应该向芹菜记录器添加
邮件管理员
处理程序,如下所示:

LOGGING = {

...

'loggers': {
    'django.request': {
        'handlers': ['mail_admins'],
        'level': 'ERROR',
        'propagate': False,
    },
    'celery': {
        'level': 'INFO',
        'handlers': ['mail_admins'],
        'propagate': True (or False :) ),
    },
...

顺便说一句,我用它来记录错误(Django和芹菜),这太好了

西芹对django中间件并没有真正的用处,但这将实现我认为您想要的

在代码的某个地方放置以下信号处理程序:

来自芹菜的
信号导入任务\u失败
从django.core.mail导入邮件\u管理员
从django.views.debug导入异常报告程序
@任务\u失败。连接
def任务失败处理程序(任务id、异常、回溯、einfo、*args、**kwargs):
exc_info=(einfo.type、异常、回溯)
报告者=例外报告者(无,*exc_信息)
debug\u html=reporter.get\u traceback\u html()
debug\u text=reporter.get\u traceback\u text()
subject=u'异常-%s'%Exception.message
subject=subject.replace(“\n”和“)[:250]
邮件管理员(主题、调试文本、html消息=调试html)
settings.py
中添加以下内容

# disable default celery error emails
CELERY_SEND_TASK_ERROR_EMAILS = False

芹菜并没有真正使用django中间件,但这将实现我认为您想要的

在代码的某个地方放置以下信号处理程序:

来自芹菜的
信号导入任务\u失败
从django.core.mail导入邮件\u管理员
从django.views.debug导入异常报告程序
@任务\u失败。连接
def任务失败处理程序(任务id、异常、回溯、einfo、*args、**kwargs):
exc_info=(einfo.type、异常、回溯)
报告者=例外报告者(无,*exc_信息)
debug\u html=reporter.get\u traceback\u html()
debug\u text=reporter.get\u traceback\u text()
subject=u'异常-%s'%Exception.message
subject=subject.replace(“\n”和“)[:250]
邮件管理员(主题、调试文本、html消息=调试html)
settings.py
中添加以下内容

# disable default celery error emails
CELERY_SEND_TASK_ERROR_EMAILS = False

您能否将
设置.py
中的
中间件类的内容包含在OP中?您能否将
设置.py
中的
中间件类的内容包含在OP中?这根本不起作用。我认为原始海报所寻找的是关于错误的电子邮件通知。不是简单的回溯,这根本不起作用。我认为原始海报所寻找的是关于错误的电子邮件通知。不仅仅是追踪。