Flask app.errorhandler не перехватывает исключения при работе с Flask-CLI
Я изо всех сил пытаюсь заставить мое приложение Flask правильно обрабатывать ошибки при вызове приложения с помощью Flask-CLI.
Вот простой файл с именем app_runner.py
:
import click
from flask import Flask
from flask_cli import FlaskCLI
app = Flask(__name__)
FlaskCLI(app)
@app.errorhandler(Exception)
def catch_error(e):
print('I wish I saw this')
@app.cli.command(with_appcontext=True)
def test_run():
with app.app_context():
print('You will see this')
raise Exception
print('You won\'t see this')
Я призываю test_run
функция через эту команду bash: FLASK_APP=app_runner.py flask test_run
,
Я вижу первое печатное заявление "Ты увидишь это", но я не вижу того, что говорит: "Хотел бы я видеть это".
Я ударил Exception
, но я никогда не вхожу в код, определенный в app.errorhandler
, У кого-нибудь есть предложения?
1 ответ
Решение
Обработчики ошибок предназначены только для ошибок, возникающих при обработке представлений. Команды CLI совершенно разные. Если вы хотите обработать ошибку в команде Click, вам нужно обработать ее, как и любое исключение Python: с try / except
блок.