import json import asyncio from channels.generic.websocket import AsyncWebsocketConsumer from .data_fetcher import fetch_lines_data # Вынесем логику получения данных в отдельный модуль class LineDataConsumer(AsyncWebsocketConsumer): async def connect(self): await self.accept() self.running = True await self.send(text_data=json.dumps({"message": "WebSocket connected"})) asyncio.create_task(self.send_data_periodically()) async def disconnect(self, close_code): self.running = False async def send_data_periodically(self): while self.running: data = await fetch_lines_data() await self.send(text_data=json.dumps(data)) await asyncio.sleep(5) # Ждем 5 секунд перед следующим запросом