TelegramBots долго останавливает сессию

Использую в работе библиотеку TelegramBots, но есть проблема, что боты останавливаются очень долго. Останавливаю ботов последовательно одного за другим и в результате весь процесс занимает около часа.

В списке задач TelegramBots нашёл две задачи с описанием похожей проблемы:

BotSession.stop() takes a long time

stop method never exits

Я долго отлаживал саму библиотеку, но легкого решения проблемы не нашёл. О проблема заключается в том, что ReaderThread внутри библиотеки использует блокировку на объект DefaultBotSession. Но при остановке бота мы вызываем синхронизированный метод stop у DefaultBotSession, что приводит к тому, что мы несколько десятков секунд ждём, пока ReaderThread освободит блокировку, и мы сможем её взять.

В качестве решения проблемы на текущий момент можно лишь останавливать ботов параллельно в несколько потоков. Тогда придётся ждать не час, а пару минут в худшем случае.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *