Отправка электронной почты администратору при возникновении ошибки 500 - PullRequest
4 голосов
/ 24 июля 2010

Как я могу отправить электронное письмо администратору при возникновении ошибки 500 в python.

Веб-фреймворк, который я использую, - «бутылка».

Ответы [ 2 ]

8 голосов
/ 24 июля 2010

Просто используйте декоратор @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 в False, как описано здесь , а затем использовать соответствующее промежуточное программное обеспечение WSGI для их обработки и отправки электронной почты (например, что-то вроде this * 1023).*).

1 голос
/ 24 июля 2010

Ниже приведена строка из документации Bottle .

Все необработанные исключения, кроме bottle.HTTPError, приведут к ответу 500 Internal Server Error, поэтому они выиграли 't сбой вашего сервера WSGI.

Судя по этому, вы захотите поймать эти Exception s и напишите код, чтобы отправить электронное письмо тому, кого это может касаться.Ваш код войдет в блок try, и у вас будет некоторый код для исключения bottle.HTTPError, а затем код для перехвата всех других Exception, отправляющих желаемое электронное письмо.

...