Исключение RouteReset
Исключение RouteReset применяется внутри
функции-обработчика маршрута для прерывания текущей
обработки и повторного запуска того же маршрута.
Оно наследуется от класса BottleException и
обычно используется плагинами и кэширующими
обёртками, чтобы заставить Bottle пересчитать
обработчик заново, например, после изменения
конфигурации или кэша.
Синтаксис
from bottle import RouteReset
raise RouteReset()
Пример
Давайте поднимем исключение RouteReset внутри
обработчика и посмотрим, как оно прерывает работу:
from bottle import Bottle, RouteReset
app = Bottle()
@app.route('/')
def index():
raise RouteReset()
return 'hello'
При обращении к адресу '/' будет поднято
исключение RouteReset, и Bottle попытается
заново выполнить обработчик. Так как исключение
возникает снова, в итоге будет возвращена ошибка.
Пример
Давайте используем счётчик, чтобы выполнить обработчик только один раз и при повторном запуске вернуть результат:
from bottle import Bottle, RouteReset
app = Bottle()
attempts = 0
@app.route('/')
def index():
global attempts
attempts += 1
if attempts < 2:
raise RouteReset()
return 'hello'
Результат выполнения кода для адреса '/':
hello
Смотрите также
-
класс
BottleException,
который является базовым для всех исключений Bottle -
класс
HTTPError,
который прерывает запрос с HTTP-ошибкой -
класс
PluginError,
который сигнализирует об ошибке в плагине -
атрибут
exception,
который хранит исходное исключение в HTTPError