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

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

4
Tauquir 24 Июл 2010 в 14:36

2 ответа

Лучший ответ

Просто используйте декоратор @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).

8
Liquid_Fire 26 Июл 2010 в 22:08

Ниже приводится строка из документации по бутылкам.

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

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

1
Jungle Hunter 27 Июл 2010 в 22:58