Django каналы async долгоживущих событий / потоков

Как можно реализовать непрерывный поток с помощью websockets (желательно с django-channels)?

Мой код постоянно посылает сообщение. Я хотел бы иметь возможность запускать/останавливать его, но на данный момент он не реагирует на стороне сервера на событие запуска/остановки (оператор печати не появляется). Такое впечатление, что весь потребитель блокирует поток, хотя он асинхронный. Я не могу понять, как это реализовать.

import asyncio
import json
from channels.generic.websocket import AsyncWebsocketConsumer

class ChatConsumer(AsyncWebsocketConsumer):
    pause = False

    async def connect(self):
        await self.accept()
        await self._main_loop()

    async def disconnect(self, close_code):
        pass

    async def receive(self, text_data):
        text_data_json = json.loads(text_data)
        print(text_data_json)
        pause = text_data_json["pause"]
        self.pause = bool(pause)

    async def _main_loop(self):
        while True:
            if not self.pause:
                await self.send(text_data=json.dumps({"message": "play"}))
            else:
                await self.send(text_data=json.dumps({"message": "pause"}))
            await asyncio.sleep(1)
Вернуться на верх