Многопоточность и asyncio
У меня есть бот на aiogram, который должен, помимо отвечания на команды, делать регулярную рассылку (раз в N минут отправить сообщение). Вариант с созданием параллельного потока-демона не работает (использовал threading) Что делать?
from threading import Thread
def messages():
while True:
рассылка
msgs = Thread(target=messages(),daemon=True)
msgs.start()
после этого он входит в цикл в потоке и дальше не идёт в отдельном тестовом файле аналогичные потоки адекватно работают друг с другом, оба файла в одной папке (если это важно, это папка с venv)
бот запускается
dp = Dispatcher()
bot = Bot(token=Token)
async def main():
await dp.start_polling(bot)
asyncio.run(main())
Ответы (1 шт):
Автор решения: eri
→ Ссылка
Перед start_polling
asyncio.create_task(messages())
Сама функция
async def messages():
while True:
await asyncio.sleep(0)
Рассылка
И треды не нужны. Нулевой сон для разблокировки лупа.