【问题标题】:Emailing admin when a 500 error occurs发生 500 错误时向管理员发送电子邮件
【发布时间】:2010-07-28 06:58:09
【问题描述】:

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

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

【问题讨论】:

  • 从标题中,我最初以为您想一次向那个可怜的管理员发送 500 封电子邮件! :)

标签: python bottle


【解决方案1】:

只需使用@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 之类的东西) .

【讨论】:

  • 谢谢。实际上我想知道瓶子是否提供了任何东西,我们可以使用它来发送 django 中提供的 500 错误电子邮件。 (如果我不想写上面的代码)
  • 其实你的建议只能发邮件给我。我无法找到它出错的地方,因为它不会像 django 给出的那样给出任何回溯。那么,有什么替代方法吗?
  • 我认为必须有某种方法来获取异常。我去看看。
【解决方案2】:

以下是Bottle documentation中的一行。

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

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

【讨论】:

    猜你喜欢
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-24
    • 1970-01-01
    • 2011-03-17
    • 2018-04-10
    相关资源
    最近更新 更多