发生500错误时向管理员发送邮件

4 投票
2 回答
1120 浏览
提问于 2025-04-16 01:46

我该如何在出现500错误时,给管理员发送一封邮件,使用的是Python。

我用的网络框架是'bottle'。

2 个回答

1

以下是来自Bottle文档的一段话。

除了bottle.HTTPError以外,所有未处理的错误都会导致500内部服务器错误的响应,这样就不会让你的WSGI服务器崩溃。

根据这段话,你可能想要捕捉这些异常,并写代码给相关人员发送邮件。你的代码会放在try块里,然后你会有一些处理bottle.HTTPError的代码,接着再写代码来捕捉所有其他的异常,并发送你想要的邮件。

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 错误页面。

补充:

显然,如果你使用的是最新的 Bottle v0.8,应用 @error 装饰器的函数接收到的参数不是错误代码,而是一个 bottle.HTTPError 对象,这个对象包含了异常信息和追踪记录。

另外,你可以通过将 bottle.app().catchall 设置为 False 来让 Bottle 不处理异常,具体方法可以参考 这里,然后使用一些合适的 WSGI 中间件来处理这些异常并发送邮件(例如,类似于 这个)。

撰写回答