Код состояния ответа неверен в хуке after_request в приложении бутылки

У меня есть следующее приложение для бутылок:

from bottle import Bottle, run, request, response, HTTPResponse

APP1 = Bottle()


@APP1.hook('before_request')
def before_request():
    print "APP 1 - Before Request {}".format(request.url)


@APP1.hook('after_request')
def after_request():
    print "APP 1 - After Request {}".format(request.url)
    print "Response status {}".format(response.status_code)


@APP1.route('/hello')
def hello():
    return "Hello World!"


@APP1.route('/error')
def error():
    raise HTTPResponse(status=400)

if __name__ == "__main__":
    run(APP1, host='127.0.0.1', port=8080)

Когда я нажимаю следующий URL: http://127.0.0.1:8080/error Я ожидаю, что будет напечатан код ответа 400, но вместо этого он печатает 200.

APP 1 - Before Request http://localhost:8080/error
APP 1 - After Request http://localhost:8080/error
Response status 200

Я знаю, что могу использовать концепцию плагина для реализации рекомендаций, но это означает, что мы не можем использовать after_request обработчик событий для обработки кодов состояния ошибок. К тому же это кажется нелогичным.

Мои настройки неверны? Или я неправильно понимаю перехват событий after_request для Bottle?

Пожалуйста посоветуй.


person user770119    schedule 10.11.2014    source источник
comment
Почему вы считаете, что вам нужно использовать after_request? (Почему не хватит простого плагина?)   -  person ron rothman    schedule 12.11.2014