@qw1klyy

Почему асинхронный телебот увеличивает кол-во потоков?

Если запустить этот код, сначала в консоль выводится 1 единичка в секунду, потом если нажать кнопку Баланс, то в консоль начинает выводить уже 2 единички, и так далее. Почему не завершается предыдущая программа, а к ней добавляется еще сверху?
from telebot.async_telebot import AsyncTeleBot
import asyncio
               if callback.data=='balance':
        log4 = driver.find_element(By.XPATH,'/html/body/div[1]/div/div/div[3]/header/div/div[1]/div/div/div/button[2]/span/span[1]/span[2]')
        time.sleep(1)
        await bot.send_message(callback.message.chat.id, f'Ваш баланс составляет {log4.text}')
    if callback.data=='TM10.5' or callback.data=='TM12.5':
        if r[callback.data]=='ВЫКЛ':
            r[callback.data]='ВКЛ'
        elif r[callback.data]=='ВКЛ':
            r[callback.data] = 'ВЫКЛ'
    if r["TM12.5"] == 'ВКЛ' or r["TM10.5"]=='ВКЛ':
        while True:
            print(1)
            await asyncio.sleep(1)
  • Вопрос задан
  • 100 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
while True:
            print(1)
            await asyncio.sleep(1)

Корутина может выполняться в нескольких экземплярах параллельно. У тебя в коде вечный цикл, поэтому старые запущенные экземпляры никогда не завершаются, так что при запуске новых у тебя появляется всё больше и больше экземпляров.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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