diff options
| author | TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> | 2026-04-01 17:46:56 +0900 |
|---|---|---|
| committer | TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> | 2026-04-01 17:46:56 +0900 |
| commit | c294e9df6207973306f58186d278e12399f162a3 (patch) | |
| tree | 9f847439eb29c82a77da0dcf7fe426cfa0cbe65b /services/data-collector/src/data_collector/ws_factory.py | |
| parent | 69e88b3b353f1a2ab7a78259b480e8afbd87669c (diff) | |
fix: WS factory, backtester config, CI docker builds, health port docs
Diffstat (limited to 'services/data-collector/src/data_collector/ws_factory.py')
| -rw-r--r-- | services/data-collector/src/data_collector/ws_factory.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/services/data-collector/src/data_collector/ws_factory.py b/services/data-collector/src/data_collector/ws_factory.py new file mode 100644 index 0000000..b8e2719 --- /dev/null +++ b/services/data-collector/src/data_collector/ws_factory.py @@ -0,0 +1,33 @@ +"""WebSocket factory for exchange-specific connections.""" +import logging + +from data_collector.binance_ws import BinanceWebSocket + +logger = logging.getLogger(__name__) + +# Supported exchanges for WebSocket streaming +SUPPORTED_WS = {"binance": BinanceWebSocket} + + +def create_websocket(exchange_id: str, **kwargs): + """Create an exchange-specific WebSocket handler. + + Args: + exchange_id: Exchange identifier (e.g. 'binance') + **kwargs: Passed to the WebSocket constructor (symbols, timeframe, on_candle) + + Returns: + WebSocket handler instance + + Raises: + ValueError: If exchange is not supported for WebSocket streaming + """ + ws_cls = SUPPORTED_WS.get(exchange_id) + if ws_cls is None: + supported = ", ".join(sorted(SUPPORTED_WS.keys())) + raise ValueError( + f"WebSocket streaming not supported for '{exchange_id}'. " + f"Supported: {supported}. " + f"Use REST polling as fallback for unsupported exchanges." + ) + return ws_cls(**kwargs) |
