From d96a95bf3954c2207c56dcfb61349719600791b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B8=D0=BA=D1=82=D0=BE=D1=80?= <78488229+viktor138irk@users.noreply.github.com> Date: Fri, 8 May 2026 03:39:15 +0900 Subject: [PATCH] Use CoinEx websocket stream for live market endpoint --- app/main.py | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/app/main.py b/app/main.py index 209efa3..c5f3c98 100644 --- a/app/main.py +++ b/app/main.py @@ -1,17 +1,17 @@ -import asyncio from pathlib import Path from fastapi import Depends, FastAPI, HTTPException, WebSocket, WebSocketDisconnect from fastapi.responses import FileResponse from fastapi.staticfiles import StaticFiles from sqlalchemy.orm import Session -from app.coinex import CoinExClient +from app.coinex import CoinExClient, CoinExLiveStream from app.core import get_settings from app.db import SessionLocal, get_db, init_db from app.demo_account import DemoAccountService settings = get_settings() coinex = CoinExClient(settings.coinex_api_base) +live_stream = CoinExLiveStream(settings.coinex_ws_spot, coinex) demo_service = DemoAccountService(settings.demo_initial_balance, settings.demo_quote_asset) app = FastAPI(title=settings.app_name) @@ -38,6 +38,7 @@ async def health() -> dict: 'trade_mode': settings.trade_mode, 'live_enabled': settings.live_enabled, 'default_market': settings.default_market, + 'coinex_ws_spot': settings.coinex_ws_spot, } @@ -81,16 +82,10 @@ async def market_ticker(market: str | None = None) -> dict: async def market_stream(websocket: WebSocket, market: str) -> None: await websocket.accept() try: - while True: - ticker = await coinex.get_ticker(market) + async for live_event in live_stream.trades(market): with SessionLocal() as db: account = demo_service.snapshot(db).model_dump(mode='json') - await websocket.send_json({ - 'type': 'ticker', - 'market': market.upper(), - 'data': ticker, - 'demo_account': account, - }) - await asyncio.sleep(3) + live_event['demo_account'] = account + await websocket.send_json(live_event) except WebSocketDisconnect: return