【问题标题】:Django does not send messages about 500 errorsDjango 不发送有关 500 个错误的消息
【发布时间】:2015-08-29 19:34:56
【问题描述】:

好的。所以我真的很不高兴我可能会发布另一个重复的问题,但似乎没有任何相关的东西可以帮助我。

所以问题是我想接收包含服务器错误消息 (500) 的电子邮件,而我不这样做。

我知道什么:

  1. 在我的本地机器上一切正常:当我设置DEBUG = False 时,我收到了我的消息。老实说,他们太多了。
  2. 从生产服务器上的./manage.py shell 内部调用django.core.mail.mail_admins() 工作正常:我收到了我的电子邮件,因为我从一个视图中收到了send_email() 发送的电子邮件
  3. 我在生产服务器上设置了DEBUG = False
  4. 我试图通过将我的主页模板弄乱并缺少括号以及将assert 0 字符串放入我的主页视图来获取电子邮件。我的 500.html 渲染得很好。
  5. 这是我在 settings.py 中的电子邮件设置:

    EMAIL_HOST = 'smtp.yandex.ru'
    EMAIL_HOST_USER = 'noreply@<project-name>.ru'
    EMAIL_HOST_PASSWORD = '<password>'
    EMAIL_PORT = 587
    EMAIL_USE_TLS = True
    DEFAULT_FROM_EMAIL = 'noreply@<project-name>.ru'
    SERVER_EMAIL = 'noreply@<project-name>.ru'
    

  6. 以下是我在 settings.py 中的日志记录设置:
    LOGGING = {
        'version': 1,
        'disable_existing_loggers': False,
        'filters': {
            'require_debug_false': {
                '()': 'django.utils.log.RequireDebugFalse',
            }
        },
        'handlers': {
            'mail_admins': {
                'level': 'ERROR',
                'filters': ['require_debug_false'],
                'class': 'django.utils.log.AdminEmailHandler'
            }
        },
        'loggers': {
            'django': {
                'handlers': ['mail_admins'],
                'level': 'ERROR',
                'propagate': False,
            },
        }
    }
    

    我也尝试将“传播”更改为 True,但没有成功

  7. 这是来自 settings.py 的我的管理员: ADMINS = (('xelnod', 'xelnod@gmail.com'),)
  8. 我正在使用 Django 1.7 和 Python 2.7.6
  9. 生产服务器运行在 '57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux'
  10. 我在这里: https://stackoverflow.com/questions/1414130/,
    和这里: https://stackoverflow.com/questions/17374909/,
    甚至在这里: https://stackoverflow.com/questions/19634962/(所以我已经运行了sudo apt-get install sendmail),
    还有一些 other places — 不幸的是,没有运气。

……我错过了什么(我敢打赌这会很愚蠢……)?

UPD:我注意到,当我在本地测试这个时,我只收到关于我的静态文件的电子邮件 - 没有关于损坏的模板或 AssertionError,所以,我想,这一定是我的错误级别或我的 500 个错误还不足以让 Django 向他们发送电子邮件……尝试将处理程序和记录器级别设置为 INFO,但没有任何改变

【问题讨论】:

  • 尝试更改loggers => 'level': 'DEBUG'

标签: python django email


【解决方案1】:

当您拥有DEBUG = True 时,错误信息是什么?

也许你需要修复你的 500 模板,因为如果那个模板坏了,你就看不到 500 错误页面的 500 错误页面

【讨论】:

  • AssertionError at / No exception message supplied Request Method: GET Request URL: http://localhost:8082/ Django Version: 1.7c2 Exception Type: AssertionError首页上的那个。
  • 嗯,我看到我的500.html模板,是不是说明里面没有错误?
  • 你的 500.html 中有模板标签吗?尝试先删除它们,然后在此模板中使用纯文本(仅此而已)。否则,发布完整的堆栈跟踪以供进一步调查
  • 抱歉耽搁了!尝试删除所有模板标签 - 没有成功。这是堆栈跟踪...@ 987654323@ 抱歉,我不得不删掉 PYTHONPATH 以便我的评论不要太长。但是,在跟踪中看不到任何有趣的东西:(
  • 它确实说明了你的观点/home/ubuntu/repos/tenderon/tenderon/views.py in home, line 164也许你应该检查那行?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-25
  • 2020-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多