Задача: запустить много ботов в одном докере.
При запуске локально на винде или маке, то все нормально запускается и работает как и предсказывается
Но при запуске в докере выдается ошибка:
backend1-1 | File "uvloop/loop.pyx", line 2887, in uvloop.loop.Loop.add_signal_handler
backend1-1 | raise ValueError(
backend1-1 | ValueError: add_signal_handler() can only be called from the main thread
После экспериментов с многопоточностью и различными вариантами кода, то понял что сам докер блокирует все потоки
class BaseTelegramBot:
"""Основа телеграмм Бота"""
def __init__(self, bot_data):
super().__init__()
self.bot = Bot(token=self.token)
self.dispatcher = Dispatcher()
bot = BaseTelegramBot(bot_data=bot_data)
asyncio.run(bot.start())
async def start(self):
py_logger.info(f"Бот стартовал {self.bot_data.id}")
await self.bot.set_my_commands(commands=self.commands)
await self.dispatcher.start_polling(self.bot)
проект open source:
Как запустить множество ботов в докере?