Метод group_send канала не отправляет данные, пока метод не завершится
Я разрабатываю приложение с приватным чатом между 2 пользователями. Есть 2 потребителя: потребитель chat для получения/отправки сообщений и потребитель chats для получения сообщений из всех чатов пользователя. Когда потребитель получает сообщение, он должен транслировать данные всем клиентам, которые подключены к websocket, поэтому я использую метод self.channel_layer.group_send. После этого я должен выполнить некоторые проверки и преобразования данных и отправить новые данные всем клиентам из другого websocket (chats websocket). Проблема в том, что преобразование данных может занять некоторое время (вызовы БД, сервисов и т.д.), но первый вызов group_send не отправит никаких данных, пока не закончится метод receive. Например, если я поставлю asyncio.sleep(10) между вызовами group_send - данные не будут получены клиентами в течение 10 секунд.
async def receive(self, text_data):
await self.channel_layer.group_send(f"chat_{self.sender}_{self.receiver}", text_data)
... #some data transformation or checks
await self.channel_layer.group_send(f"all_chats_{self.sender}", transformed_data)