Files
VodokanalBot/README.md
T
serega404 c5c4a63668 fix: ограничить время запросов и исключить параллельные запуски
Добавлены таймауты запросов к сайту и Telegram, общий предел выполнения 9 минут и файловая блокировка запусков. База сообщений сохраняется атомарно. Регрессионные тесты запускаются перед публикацией Docker-образа.
2026-10-28 18:11:59 +03:00

2.5 KiB

VodokanalParser

MIT License

Запуск в Docker

docker volume create vodokanal_bot_data
docker run -d --name VodokanalBot \
    --restart=always \
    -v vodokanal_bot_data:/app/data \
    -e TZ='Europe/Moscow' \
    -e TELEGRAM_TOKEN='TOKEN' \
    -e TELEGRAM_CHANNEL='CHAT_ID' \
    ghcr.io/serega404/vodokanalbot:main

Запуск в Docker Compose

Укажи TELEGRAM_TOKEN и TELEGRAM_CHANNEL в docker-compose.yml, затем запусти:

docker compose up -d --build

Интеграции

Бот проверяет сообщения каждые 10 минут. Параллельные запуски защищены файловой блокировкой: если предыдущий запуск ещё работает, очередная проверка пропускается, не помечая сообщения обработанными. Следующий успешный запуск снова сравнит сообщения за текущий день с базой.

Один запуск ограничен 9 минутами. Запрос к сайту водоканала имеет таймаут 10 секунд на подключение и 60 секунд ожидания данных, запросы к Telegram — 60 секунд. База data/db.json заменяется атомарно, чтобы прерывание записи не повредило предыдущие данные.

Общая логика парсинга, работы с data/db.json и поиска новых сообщений вынесена в parser.py.

Для новой интеграции достаточно создать свой адаптер отправки и передать его в publish_new_posts:

from parser import create_session, publish_new_posts

session = create_session()

publish_new_posts(
    send_message=lambda message: print(message),
    session=session,
    url="http://www.tgnvoda.ru/avarii.php",
)

Библиотеки

Лицензия

Распространяется под MIT License. Смотри файл LICENSE для того что бы узнать подробности.