Перейти к содержанию

Приложение (Application)

Основной класс, связывающий воедино весь функционал фрэймворка.

from hius import Hius

Особенности

  • Класс не унаследован от Starlette, но заимствует некоторые механизмы, например инициализацию middleware.
  • Является dict-like объектом, поэтому в нем можно хранить какие-то переменные либо другие объекты.
  • Механизмы (on_startup, on_shutdown, on_lifespan), способны работать со множеством объектов. Кроме того, они передают в callable-объект само приложение, что позволяет например создать подключение к БД и установить его в приложение при старте и корректно закрыть подключение при завершении работы. Порядок вызова объектов совпадает с порядком их добавления.
  • В классе реализованы как обычные методы, так и декораторы для написания сервиса в стиле Flask или FastAPI.

Описание

class Hius(debug=False,
           routes=None,
           exception_handlers=None,
           on_startup=None,
           on_shutdown=None,
           on_lifespan=None)

Параметры

  • debug (bool) - флаг debug-режима. При значении True, трэйсбэк будет форматироваться и отображаться в браузере.
  • routes (Sequence[BaseRoute]) - список роутов, которые будут обрабатывать входящие запросы.
  • exception_handlers (Dict[Union[int, Type[Exception]], Callable]) - словарь, где ключ это статус-код либо тип исключения, а значение, (sync/async) callable-объект, который должен обработать это исключение. Обработчик исключения должен иметь следующую форму handler(request, exc) -> response.
  • on_startup (Sequence[Callable]) - список (sync/async) объектов, которые будут вызваны при старте приложения. Должны принимать на вход один параметр, этим параметром им передаётся само приложение.
  • on_shutdown (Sequence[Callable]) - список (sync/async) объектов, которые будут вызваны при завершении работы приложения. Должны принимать на вход один параметр, этим параметром им передаётся само приложение.
  • on_lifespan (Sequence[Callable]) - список (sync/async) генераторов. Должны содержать 2 "блока" кода и принимать на вход один параметр, этим параметром им передаётся само приложение. Первый блок кода выполняется при запуске приложения, второй при завершении работы.

Методы

Добавление обработчика исключения.

add_exception_handler(exc, handler)

  • exc (Union[int, Type[Exception]) - статус-код или тип исключения, которое следует обработать.
  • handler (Callable) - обработчик исключения.

Добавление middleware.

add_middleware(mw_cls, **mw_options)

  • mw_cls (ASGIApp) - middleware-класс.
  • mw_options (Dict[str, Any]) - словарь параметров для middleware.

Добавление списка HTTP роутов.

add_routes(routes)

  • routes (Sequence[BaseRoute]) - список роутов.

Добавление HTTP роута.

add_route(path, endpoint, methods=None, name=None)

  • path (str) - путь.
  • endpoint (Callable) - обработчик роута.
  • methods (Sequence[str]) - список методов, которые будут обрабатыватся на этом роуте.
  • name (str) - имя роута.

Добавление Websocket роута.

add_websocket(path, endpoint, name=None)

  • path (str) - путь.
  • endpoint (Callable) - обработчик роута.
  • name (str) - имя роута.

Монтирование суб-приложения.

mount(path, app, name=None)

  • path (str) - путь.
  • endpoint (ASGIApp) - инстанс суб-приложения.
  • name (str) - имя cуб-приложения.

Получение роута внутри приложения.

url_path_for(name, **path_params)

  • name (str) - имя роута.
  • path_params (Dict[str, str]) - параметры для подстановки в путь.

Декораторы

Добавление обработчика исключения.

exception_handler(exc)

Тоже что и добавление используя метод, кроме передачи параметра handler, им является декорируемая функция.


Добавление HTTP/Websocket роута.

route(path, methods=None, name=None)
websocket(path, name=None)

Тоже что и добавление используя метод, кроме передачи параметра endpoint, им является декорируемая функция.


Добавление функций, вызываемых при запуске/завершении приложения.

on_startup()
on_shutdown()
on_lifespan()

Декорируемый объект должен принимать один параметр, которым является само приложение.

Back to top