Задать вопрос
Xreymonster
@Xreymonster
аэаэ

Как сделать асинхронный цикл while true?

Пытаюсь реализовать проверку оплаты в боте, загвоздка в том, что при постоянной проверке оплаты используя цикл while true (у меня чуть другой цикл, но сути это не меняет) весь остальной код игнорируется, все юзеры, что пишут боту, остаются проигнорированы до тех пор, пока цикл не остановится. Вот я и решил попробовать сделать его асинхронным, весь инет перерыл, ни один из примеров не помог. Представляю свой код.
time_sleep = 300
while time_sleep > 0:
    if api.check(comment):
        """тут обновляю базу данных с балансом"""
        break
    else:
        sleep(10)
        time_sleep -= 10
  • Вопрос задан
  • 2926 просмотров
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Skillbox
    Python-разработчик
    10 месяцев
    Далее
  • ProductStar
    Профессия: Python-разработчик
    8 месяцев
    Далее
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
sleep(10)
Дай угадаю, from time import sleep?
Если так, то:
1. Почитай, как работают асинхронные программы
2. Осознай свой косяк
3. Замени time.sleep(10) на await asyncio.sleep(10)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@gagarinten
import asyncio

async def inf_loop():
    while True:
        print("Бесконечный цикл")


loop = asyncio.get_event_loop()

asyncio.ensure_future(work())
loop.run_forever()
Ответ написан
@Potterman
In a nut shell...
асинхронная бесконечность... в ней нет никакого смысла
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы