Понадобятся ли мне consumers.py, asgi.py и routing.py при использовании Websocket API от Tradier?

Итак, я пытаюсь передавать рыночные данные через tradier API с помощью вебсокетов. Вот 2 ссылки на документацию: https://documentation.tradier.com/brokerage-api/streaming/websocket-streaming. https://documentation.tradier.com/brokerage-api/streaming/wss-market-websocket

Я не слишком хорошо знаком с вебсокетами, поэтому мне интересно, нужно ли использовать каналы django и добавить consumers.py, asgi.py и routing.py для передачи рыночных данных в прямом эфире на передний край? Если да, то что мне нужно добавить в каждый из этих файлов?

Я пробовал просто иметь consumers.py и иметь потоковую конечную точку в urls.py

consumers.py:

import json
import logging
import websockets
from channels.generic.websocket import WebsocketConsumer
from .tradingAPI.tradier import tradierFunctions

logger = logging.getLogger(__name__)

class TradierStreamConsumer(WebsocketConsumer):
    async def connect(self):
        await self.accept()

        logger.info("WebSocket connection established")

        uri = "wss://ws.tradier.com/v1/markets/events"
        async with websockets.connect(uri, ssl=True, compression=None) as websocket:
            payload = {
                "symbols": ["SPY", "NVDA"], 
                "sessionid": tradierFunctions.createStreamingSession(), 
                "filter": ["quote"],
                "linebreak": "true"
                }
            await websocket.send(json.dumps(payload))
            
            logger.info(f"Sent payload: {payload}")

            async for message in websocket:
                logger.info(f"Received message: {message}")
                await self.send(text_data=json.dumps({"message": message}))

urls.py:

urlpatterns = [
    ...
    path('api/tradier/stream', TradierStreamConsumer.as_asgi()),
]

Я ожидал, что на веб-страницу будут передаваться непрерывные JSON-данные, но в действительности я получаю следующее: enter image description here

Кроме того, вот мой консольный вывод, когда я регистрирую информацию: enter image description here

Вернуться на верх