4

在 python 中发生 500 错误时如何向管理员发送电子邮件。

我正在使用的网络框架是“瓶子”。

4

2 回答 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 以不处理异常,方法是按照此处所述设置为bottle.app().catchall,然后使用一些适当的 WSGI 中间件来处理它们并发送电子邮件(例如,类似这样的东西)。False

于 2010-07-24T15:06:01.983 回答
1

以下是Bottle 文档中的一行。

所有未处理的异常bottle.HTTPError都将导致 500 Internal Server Error 响应,因此它们不会使您的 WSGI 服务器崩溃。

由此判断,您可能希望捕获那些Exceptions 并编写代码以向它可能关注的任何人发送电子邮件。您的代码将进入该try块,您将有一些bottle.HTTPError异常代码,然后是捕获所有其他Exception发送所需电子邮件的代码。

于 2010-07-24T11:19:43.060 回答