Мой код:
try:
tasks = [
asyncio.create_task(start_notifier(bot), ),
asyncio.create_task(dp.start_polling(bot))
]
await asyncio.gather(*tasks, return_exceptions=True)
except Exception as ex:
main_logger.critical(f"Bot stopped due to exception: {ex}", exc_info=True)
# await dp.start_polling(bot) # restart the bot
finally:
await bot.send_message(chat_id=Config.ADMIN_ID, text="<b>BOT STOPPED</b>")
await bot.session.close()
Я вызываю 2 метода через asyncio.gather(), первый это телеграм бот и второй это метод которые отправляет сообщения. Проблема в том что после запуска и попытки остановить процес с помощью Ctrl + C ничего не происходит так как asyncio просто игнорирует это. Даже если я получаю ошибку от телеграм бота, скрипт все равно не заканчивает работа так как нотификатор продолжает работать, нотификатор это закольцованный метод (и в итоге, код работает безконечно пока я его принудительно не остановлю через пайчарм, но если это на сервере, то мне приходиться выходить с сервера чтобы сервер принудительно закончил мою программу), а ошибку от телеграмм бота я тоже не могу отловить так как asyncio перехватывает ее. Я пробовывал выставить параметр return_exceptions как True но это не помогает, ошибку я все равно не получаю.