Skip to content

ExpressApp/asyncbox-framework

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Asyncbox Framework

codecov

Установка

  1. Установка

    a) из исходников
    Склонировать репозиторий с исходниками

    git clone https://github.com/ExpressApp/asyncbox-framework.git

    Собрать пакет и установить его

    cd asyncbox-framework
    poetry build
    pip install --user dist/asyncbox-0.4.0-py3-none-any.whl

    b) из pypi

    pip install asyncbox
  2. Создание проекта из шаблона

    asyncbox -v -t http://path/to/template -p plugin1 -p plugin2 bot_project_name
    cd bot_project_name
  3. Установка зависимостей

    poetry install

    Важно: библиотека asyncbox в созданном проекте будет установлена той версии, которя указана в шаблоне файла pyproject.toml. При необходимости вы можете указать нужную версию или ветку репозитория следующим образом:

    asyncbox = { git = "https://github.com/ExpressApp/asyncbox-framework.git", branch = "master"}
    
  4. Обновление

    Для обновления библиотеки в проекте:

    poetry update

    Для обновления шаблона для новых проектов - повторить операции из пункта 1.

  5. Настройки бота

    Настройки бота находятся в файле app/settings.py и представляют собой класс унаследованный от pydantic.BaseSettings. При необходимости можно изменить место расположения настроек с помощью переменной окружения APP_SETTINGS задав её значением строку вида app.settings:AppSettings, где до двоеточия указывается модуль, а после двоеточия объект внутри модуля.

    Функциональность бота можно расширять при помощи плагинов. Список включеных плагинов задаётся настройкой PLUGINS, которая является списком строк в описанном выше формате. Имя класса Plugin можно не указывать. Плагины вкючённые в библиотеку:

    Путь Описание
    asyncbox.plugins.logger расширенное логирование (Loguru)
    asyncbox.plugins.sqlalchemy БД (PostgreSQL)
    asyncbox.plugins.redis Redis
    asyncbox.plugins.sentry мониторинг ошибок (Sentry)
    asyncbox.plugins.prometheus сбор метрик (Prometheus)

    Каждый из плагинов может требовать наличия определённых настроек. В этом случае необходимо добавить соответствующую настройку в класс AppSettings

    Список коллекторов хэндлеров комманд задаётся в настройке COLLECTORS в таком же формате как и список плагинов.

    Настройка DEFAULT_ROUTER содержит путь к экземпляру fatsapi.APIRouter, который обрабатывает API запросы от BotX и по умолчанию имеет значение "asyncbox.endpoints:router". Для внесения изменений в логику обработки таких запросов следует создать модуль, в котором будет определён экземпляр fatsapi.APIRouter, обрабатывающий запросы на маршрутах /command и /status и указать путь к этому экземпляру в DEFAULT_ROUTER.