Невозможно остановить цикл 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, когда я получаю новое сообщение, как я могу это сделать