2010-07-24 126 views
4

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

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

+2

来自标题我最初以为你想一次发送500封电子邮件给那个可怜的管理员! :) – 2010-07-24 10:38:19

回答

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() 

只需转到​​看到它在行动

当然你也可以使用模板的错误页面就像任何其他页面一样。我不确定在有错误处理程序时是否有办法获取内置的瓶子错误页面。

编辑:

很显然,如果你使用的是最新瓶V0.8,功能要应用的@error装饰作为参数接收没有错误代码,而是一个bottle.HTTPError对象,其中包含异常和回溯。

或者,您可以设置一瓶未设置bottle.app().catchallFalse描述here处理异常,然后用一些适当的WSGI中间件来处理它们并发送电子邮件(例如像this)。

+0

谢谢。其实我想知道是否有任何瓶子提供的东西,我们可以用它发送500个错误的电子邮件,如django中所提供的。 (如果我不想写上面的代码) – Tauquir 2010-07-26 05:11:29

+0

其实你的建议只能给我发电子邮件。我无法找到它出错的地方,因为它不会像django那样给出任何回溯。那么,有没有其他方法? – Tauquir 2010-07-26 07:22:14

+0

我认为必须有一些方法来获得例外。我会看看。 – 2010-07-26 21:54:27

1

以下是Bottle documentation的一行。

bottle.HTTPError其他所有未处理的异常将导致500内部服务器错误响应,所以他们不会崩溃的WSGI服务器。

由此判断,您会想要抓住那些Exception s并编写代码发送一封电子邮件给任何可能关注的人。您的代码将进入try区块,您将获得bottle.HTTPError例外的一些代码,然后编码以捕获发送所需电子邮件的所有其他Exception

相关问题