Я пытаюсь интегрировать Sentry для сообщения об ошибках в моем приложении Flask, но недавно у меня возникла проблема, когда сторонняя библиотека вызвала добавление BaseException
в один из моих обработчиков. Я вижу, что у Flask нет проблем с Exception
, но BaseException
в основном заставляет приложение перестать работать. Простой пример:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
raise BaseException('Bummer! Exception')
return 'Hello world'
if __name__ == '__main__':
app.run(debug=True, port=5004)
Называя маршрут я получаю:
$ curl localhost:5004
curl: (52) Empty reply from server
последующие вызовы приложения оставляют завиток в ожидании ответа.
Я пытался использовать декоратор errorhandler
так:
@app.errorhandler(BaseException)
def handle():
print("Whoops.")
но Flask выдает мне ошибку:
assert issubclass(exc_class, Exception)
AssertionError
Что достаточно справедливо. Я понимаю, что эта сторонняя библиотека должна быть подклассом Exception
, а не BaseException
, но все же я надеюсь, что есть способ справиться с такими ошибками во Flask и завершить запрос.