Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nomilkinmyhome/vkbottle_bot_architecture_example
Пример архитектуры проектов на VKBottle 3.0
https://github.com/nomilkinmyhome/vkbottle_bot_architecture_example
bot example vkbottle
Last synced: 8 days ago
JSON representation
Пример архитектуры проектов на VKBottle 3.0
- Host: GitHub
- URL: https://github.com/nomilkinmyhome/vkbottle_bot_architecture_example
- Owner: nomilkinmyhome
- Created: 2021-01-12T19:48:16.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2021-07-08T12:37:55.000Z (over 3 years ago)
- Last Synced: 2023-03-09T02:42:56.471Z (almost 2 years ago)
- Topics: bot, example, vkbottle
- Language: Python
- Homepage:
- Size: 37.1 KB
- Stars: 30
- Watchers: 1
- Forks: 2
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## VKBottle bot architecture example
Пример приемлемой на мой взгляд архитектуры проекта с использованием VKBottle 3.0
Поскольку это всего лишь пример, а не реальный проект, местами я использую громоздкие конструкции для маленьких вещей (use_cases, repositories).
В реальных проектах в этих местах будет значительно больше кода, так что применение именно такого стиля будет оправдано.---
### Навигация:
В пакете src основной код проекта. Его содержимое:
- \_\_main\_\_.py - точка входа. Содержит только экземпляр бота и его запуск.
- app.py - модуль, в котором происходит сборка приложения.
- config.py - конфигурация проекта, которая берется из переменных окружения. Рядом с .env.example нужно обязательно создать .env-файл с перечнем необходимых констант.
- models - пакет с моделями и всем, что относится к работе с базой данных.
- blueprints - разделение кода на логические части.
- repositories - реализация паттерна Repository.
- use_cases - бизнес-логика.
- initialize.py - подготовка БД к первому запуску проекта.В tests содержатся тесты. В этом примере они больше формальные, у меня не было цели что-то и правда протестировать.
Мне хотелось показать как в принципе в подобном проекте должны выглядеть тесты и где они должны лежать.
Про архитектуру самих тестов можно прочитать в "Python Testing with Pytest: Simple, Rapid, Effective, and Scalable".### Запуск:
1. Запуск бота вместе с БД через `docker-compose`
```bash
# Сборка и запуск контейнеров
docker-compose up --build
# Сборка и запуск контейнеров в фоновом режиме
docker-compose up --build -d
# Остановить контейнеры поле запуска в фоновом режиме
docker-compose down
```
2. Сборка и запуск контейнера через Docker
```bash
docker build -t vkbottle-example .
docker run vkbottle-example
# Или
docker run -d vkbottle-example
# Для запуска в фоновом режиме
```
3. Ручной запуск через `python -m src`PR, код-ревью и любая критика приветствуются.