Проект представляет из себя python приложение, написанное на flask.
Каждый бот представляет из себя веб-приложение, в котором реализовано три контроллера:
- hello (
/hello) [GET] — выдает текстовый вывод. Необходимо исключительно для отладки - send_data (
/send_data) [POST] — принимает запрос с определенным телом (об этом ниже), обрабатывает его и, если необходимо, передает его другим ботам. Обработчик запроса пользователя - receive_data (
/receive_data) [POST] — то же, что и send_data, но используется при взаимодействии ботов друг между другом
Тело запроса состоит из массива addresses, в котором есть объекты с полем address с URL бота, которому необходимо отправить пакет; size, с размером пакета; addresses, с массивом адресатов бота из поля address.
Пример тела запроса для send_data и receive_data:
{
"addresses": [
{
"addresses": [
{
"addresses": [],
"size": "5kB",
"address": "http://testbot-3:5000"
}
],
"size": "10kB",
"address": "http://testbot-2:5000"
},
{
"addresses": [
{
"addresses": [],
"size": "20kB",
"address": "http://testbot-2:5000"
}
],
"size": "15kB",
"address": "http://testbot-3:5000"
}
]
}В данном случае схема взаимодействия ботов друг между другом будет следующей:

Версия python — 3.9
Установка зависимостей: pip install -r src/requirements.txt
Запуск: python src/main.py
Install: curl -LsSf https://astral.sh/ruff/install.sh | sh
Run: ruff check --per-file-ignores="__init__.py:F401"