2016-10-17 3 views
3

Я использую Flask Restful для создания API. У меня есть ряд классов моделей с методами, которые могут вызывать пользовательские исключения (например: исключение AuthFailed в моем классе модели User). Я использую настраиваемую обработку ошибок, задокументированную here, чтобы справиться с этим (чтобы при сбое auth был отправлен соответствующий ответ). Все идет нормально. Тем не менее, я замечаю, что когда возникает исключение, хотя правильный ответ JSON и статус отправляются обратно, я все равно получаю трассировку, которая не идеальна. Обычно, если я обрабатываю ошибку (вне фляжки) с помощью блока try-except, исключение может уловить ошибку и обработать ее (предотвращая трассировку). Итак, каков правильный подход здесь? Я не понимаю, как использовать функцию ошибок?Flask restful - Обработка слежения за обработкой исключений?

ответ

1

К сожалению, для вас это обработано «по дизайну» API-интерфейсов Flask-RESTful errors. Записываемые исключения регистрируются и возвращается соответствующий ответ, определенный в файле errors.

Однако, вы можете изменить уровень выхода журнала путем изменения уровня лога регистратора КОЛБЫ как это:

app = Flask(__name__) 
app.logger.setLevel(logging.CRITICAL) 

Я думаю, что вы бы на самом деле нужен установить его CRITICAL, потому что эти ошибки все еще получать вход насколько я знаю, даже на уровне журнала ERROR.

Кроме того, как Flask, так и Flask-RESTful являются open-source. При этом, посмотрев код, я нашел the function of a Flask app that is responsible for adding the exception traceback to the log (Flask version 0.11.1). Конечно, вы можете просто создать свой собственный класс App (расширяющий исходный класс Flask), который переопределяет этот метод (или вызывающий его) и делает что-то другое. Однако при обновлении версии Flask вы должны быть осторожны, если используете недокументированные материалы, подобные этому.

+0

Хм нормально. Кажется странным, что не существует способа предотвратить регистрацию ошибок (независимо от уровня ошибок), когда они адекватно обрабатываются! Но хорошо. – guywhoneedsahand

+0

К сожалению, я не видел ничего другого при работе с Flask (-RESTful). Однако я снова посмотрел на исходный код Flask (-RESTful) и нашел то, что могло бы помочь вам в достижении того, что вы хотите сделать (и повысить мой ответ на приемлемый уровень: P). – mxscho

 Смежные вопросы

  • Нет связанных вопросов^_^