Работа с BaseException в Python Flask - PullRequest
0 голосов
/ 24 апреля 2018

Я пытаюсь интегрировать 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 и завершить запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...