Задать вопрос
@b4r4

Как запускать асинхронную функцию одновременно с поллингом бота телеграмм?

Есть функция которая мониторит бд, также есть бот телеграм. Все находится в одном файле. Не могу найти способ, чтобы одновременно запустить монитор функцию и бота.

Ниже функция монитора:

#validation monitoring
async def validator_monitor():
while True:
print("Проверяю записи...")
validation = await db.verif_checker.find().to_list(None)
for person in validation:
try:
if (person['verification'] == 1 and person['notify'] == 0):
await bot.send_message(person['uid'], 'Вы успешно прошли верификацию!')
db.verif_checker.update_one({"uid": person['uid']}, {"$set": {"notify": 1}})
print(f'Verif sent to {person["uid"]}!')
else:
pass
print(f'Skipping user {person["uid"]} ...')
except Exception as err:
print(err)
await asyncio.sleep(1)

asyncio.run(validator_monitor())

А здесь как я пытался запустить одновременно:

if __name__ == '__main__':
executor.start_polling(dp)
loop = asyncio.get_event_loop()
asyncio.create_task(validator_monitor())

Такой метод привел к работе функции при этом сам бот не отвечал.
  • Вопрос задан
  • 53 просмотра
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    1C-разработчик
    8 месяцев
    Далее
  • Нетология
    Python-разработчик с нуля
    6 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
start_polling() имеет параметр on_startup, который принимает корутину или список корутин.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
LIAN Москва
от 270 000 до 300 000 ₽
НТЦ ПРОТЕЙ Санкт-Петербург
от 150 000 до 330 000 ₽
Aporia Севастополь
До 150 000 ₽