【发布时间】:2010-07-28 06:58:09
【问题描述】:
当出现 500 错误时,如何在 python 中向管理员发送电子邮件。
我使用的网络框架是“瓶子”。
【问题讨论】:
-
从标题中,我最初以为您想一次向那个可怜的管理员发送 500 封电子邮件! :)
当出现 500 错误时,如何在 python 中向管理员发送电子邮件。
我使用的网络框架是“瓶子”。
【问题讨论】:
只需使用@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 来设置 Bottle 不处理异常,如 here 所述,然后使用一些适当的 WSGI 中间件来处理它们并发送电子邮件(例如 this 之类的东西) .
【讨论】:
以下是Bottle documentation中的一行。
除
bottle.HTTPError之外的所有未处理异常都将导致 500 Internal Server Error 响应,因此它们不会使您的 WSGI 服务器崩溃。
据此判断,您可能希望捕获那些Exceptions 并编写代码以向它可能关注的任何人发送电子邮件。您的代码将进入try 块,您将有一些代码用于bottle.HTTPError 异常,然后代码捕获所有其他发送所需电子邮件的Exceptions。
【讨论】: