Django Websocket: Все сообщения отправляются после завершения цикла
Я пытаюсь создать приложение, в котором я запускаю игру с обратным отсчетом. Для этого у меня есть цикл обратного отсчета. Проблема в том, что когда я ожидаю цикл отправки, все сообщения отправляются после завершения цикла. Когда я помещаю функцию в задачу, она отправляет сообщения мгновенно, но это не то, что я хочу, потому что мне нужно ждать, пока функция вызовет другую функцию после этого.
Это функция обратного отсчета
async def init_starting(self):
if not self.lobby.status == "waiting":
print("Already Started")
return False
else:
print("Starting Countdown")
self.lobby.status = 'starting'
await self.save_lobby()
await self.send_status_message_with_status(status='starting', data={'has_started': self.lobby.has_started,
'host': self.host.username,
'players': self.players,
'lobby_code': self.lobby_code,
'countdown': 3})
countdown = 3
while countdown >= 0: # here are the messages not sent instant but after the loop is finished (with my current approach they are sent instant but i cant await it
countdown_data = {
'countdown': countdown
}
await self.send_status_message_with_status(status='starting', data=countdown_data)
countdown -= 1
await asyncio.sleep(1)
self.lobby.status = 'started'
await self.save_lobby()
await self.send_status_message_with_status(status='started', data={
'message': "Test"
})
return True
Вот я сейчас приступаю к выполнению задания
if "command" in text_data_json:
command = text_data_json['command']
match command:
case 'start':
loop = asyncio.get_running_loop()
start_task1 = loop.create_task(self.init_starting()) # here i would like to await the task but when i do it they are not sent instant
case _:
print("Code not found")
Заранее спасибо за любую помощь!