Невозможно остановить цикл while в djnago chanels после получения сообщения (Попытка сделать таймер с использованием while и asyncio)

Я хочу остановить цикл while при получении нового сообщения, как это сделать? Я делаю эту задачу каждый раз, когда получаю сообщение от front end (это как таймер, когда я нажимаю на кнопку, таймер запускается и если таймер == 20s или кнопка нажата снова, таймер перезапускается)

restarting = True
i = 0
restarting = False

while restarting == False :
    i += 1
    await asyncio.sleep(1)
    if i == 20 or restarting == True :
        await self.channel_layer.group_send(
            self.room_group_name,
            {
                'type': 'starting_timer',
                
                'Timer': i,
            }
        )
        break
    await self.channel_layer.group_send(
        self.room_group_name,
        {
            'type': 'starting_timer',
            
            'Timer': i,
        }
    )

Итак, моя проблема в том, что когда я получаю сообщение до 20 секунд (допустим, я нажал кнопку после 5 секунд), старый таймер продолжает посылать сообщения из старого цикла while и посылает другие сообщения перезапущенного таймера. Я хочу остановить цикл while, когда я получаю новое сообщение, как я могу это сделать

Вернуться на верх