如果管理站点出现异常,Django 会向我发送电子邮件吗?

发布于 2024-12-13 15:35:38 字数 808 浏览 0 评论 0原文

Django 文档 说:

当 DEBUG 为 False 时,Django 将向 ADMINS 中列出的用户发送电子邮件 每当您的代码引发未处理的异常和结果时进行设置 发生内部服务器错误(HTTP 状态代码 500)。

但这包括 django 管理站点吗?如果没有,我如何启用此类报告?

我问这个问题是因为当我在 ModelAdmin 子类中故意引发 Exception 时,我没有收到电子邮件。

另一方面,我尝试手动发送,效果很好。

$ ./manage.py shell
>>> from django.core.mail import EmailMessage
>>> email = EmailMessage('Hello', 'World', to=['[email protected]'])
>>> email.send()

更新: 当应用程序的 API 部分出现异常时(由活塞驱动),Django 也会发送崩溃报告。

非常感谢任何帮助。

Django documentation says:

When DEBUG is False, Django will email the users listed in the ADMINS
setting whenever your code raises an unhandled exception and results
in an internal server error (HTTP status code 500).

But does this includes django admin site? And if not, how can I enable such reporting?

I'm asking this because when I intensionally rise an Exception at ModelAdmin subclass I receive no email.

On the other hand I tried to send manually and it works fine.

$ ./manage.py shell
>>> from django.core.mail import EmailMessage
>>> email = EmailMessage('Hello', 'World', to=['[email protected]'])
>>> email.send()

UPDATE:
Also Django does sends crash reports when exception rises at API part of application (driven by piston).

Any help is much appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

罪歌 2024-12-20 15:35:38

在本例中,管理站点没有什么特别的。当管理视图引发未处理的异常时,Django 会向您发送一封电子邮件。

排查思路1

您测试过是否会收到非管理员视图的邮件吗?会不会是权限问题?与从 shell 测试电子邮件时相比,网络服务器可能以不同的用户身份运行。

疑难解答思路 2

您在 ModelAdmin 的哪个位置引发异常?

以下示例将不起作用,因为定义 ModelAdmin 类时引发异常,而不是处理请求时引发异常。

class MyModelAdmin(ModelAdmin):
    raise Exception

相反,在方法中引发异常。如果您访问以下模型的更改视图网址(例如 /admin/app/mymodel/),您应该会收到一封关于以下模型的电子邮件

class MyModelAdmin(ModelAdmin):
    def get_queryset(self, request, queryset):
        raise Exception

There is nothing special about the admin site in this instance. Django will send you an email when an admin view raises an unhandled exception.

Troubleshooting idea 1

Have you tested whether you receive an email for a non-admin view? Could it be a permissions issue? The webserver might be running as a different user than when you test emailing from the shell.

Troubleshooting idea 2

Where in the ModelAdmin are you raising the exception?

The following example will not work, because the exception is raised when the ModelAdmin class is defined, not when the request is processed.

class MyModelAdmin(ModelAdmin):
    raise Exception

Instead, raise the exception in a method. You should get an email for the following model, if you go to it's change view url (e.g /admin/app/mymodel/)

class MyModelAdmin(ModelAdmin):
    def get_queryset(self, request, queryset):
        raise Exception
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文