当发生500错误时,通过电子邮件通知管理员

4

当Python发生500错误时,我该如何向管理员发送电子邮件?

我使用的Web框架是'bottle'。


2
从标题上看,我最初以为你想一次性向那个可怜的管理员发送500封电子邮件! :) - Remo.D
2个回答

8
只需使用@error(code)装饰器来定义错误处理页面,如下所示:
from bottle import run, error, route

@error(500)
def handle_500_error(code):
  # add mail send code here
  return "Error message here"

@route("/test_500")
def cause_error():
  raise Exception

run()

只需导航到/test_500即可查看其操作。

您当然可以像处理任何其他页面一样使用模板来处理错误页面。我不确定是否有一种方法可以在有错误处理程序的情况下获得内置的瓶子错误页面。

编辑:

显然,如果您正在使用最新版本的Bottle v0.8,则应用@error装饰符的函数将接收到一个参数,而不是错误代码,该参数是一个bottle.HTTPError对象,其中包含异常和回溯信息。

或者,您可以通过将bottle.app().catchall设置为False(如此处所述),从而设置瓶子不处理异常,然后使用一些适当的WSGI中间件来处理它们并发送电子邮件(例如,类似于此类中间件)。


谢谢。实际上我想知道Bottle是否提供了任何可以用来发送500错误电子邮件的东西,就像Django提供的那样。(如果我不想编写上述代码的话) - Tauquir
实际上,您的建议只能通过电子邮件发送给我。我无法确定出错的原因,因为它不会像Django一样提供任何回溯信息。那么,有没有其他的方法? - Tauquir
我认为一定有办法获取异常。我会看看。 - Liquid_Fire

1
以下是来自Bottle文档的一行代码。

除了bottle.HTTPError之外的所有未处理异常都将导致500个内部服务器错误响应,因此它们不会使您的WSGI服务器崩溃。

根据这个,您需要捕获那些Exception并编写代码发送电子邮件给相关人员。您的代码将进入try块,您将有一些代码用于bottle.HTTPError异常,然后是用于捕获所有其他Exception的代码,该代码将发送所需的电子邮件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接