发生500错误时向管理员发送邮件
我该如何在出现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 中间件来处理这些异常并发送邮件(例如,类似于 这个)。