mirror of
https://github.com/freqtrade/freqtrade.git
synced 2025-11-29 08:33:07 +00:00
Catch and send exceptions from websockets
This commit is contained in:
@@ -7,12 +7,14 @@ from fastapi.websockets import WebSocket
|
|||||||
from pydantic import ValidationError
|
from pydantic import ValidationError
|
||||||
|
|
||||||
from freqtrade.enums import RPCMessageType, RPCRequestType
|
from freqtrade.enums import RPCMessageType, RPCRequestType
|
||||||
|
from freqtrade.exceptions import FreqtradeException
|
||||||
from freqtrade.rpc.api_server.api_auth import validate_ws_token
|
from freqtrade.rpc.api_server.api_auth import validate_ws_token
|
||||||
from freqtrade.rpc.api_server.deps import get_message_stream, get_rpc
|
from freqtrade.rpc.api_server.deps import get_message_stream, get_rpc
|
||||||
from freqtrade.rpc.api_server.ws.channel import WebSocketChannel, create_channel
|
from freqtrade.rpc.api_server.ws.channel import WebSocketChannel, create_channel
|
||||||
from freqtrade.rpc.api_server.ws.message_stream import MessageStream
|
from freqtrade.rpc.api_server.ws.message_stream import MessageStream
|
||||||
from freqtrade.rpc.api_server.ws_schemas import (WSAnalyzedDFMessage, WSMessageSchema,
|
from freqtrade.rpc.api_server.ws_schemas import (WSAnalyzedDFMessage, WSErrorMessage,
|
||||||
WSRequestSchema, WSWhitelistMessage)
|
WSMessageSchema, WSRequestSchema,
|
||||||
|
WSWhitelistMessage)
|
||||||
from freqtrade.rpc.rpc import RPC
|
from freqtrade.rpc.rpc import RPC
|
||||||
|
|
||||||
|
|
||||||
@@ -27,7 +29,13 @@ async def channel_reader(channel: WebSocketChannel, rpc: RPC):
|
|||||||
Iterate over the messages from the channel and process the request
|
Iterate over the messages from the channel and process the request
|
||||||
"""
|
"""
|
||||||
async for message in channel:
|
async for message in channel:
|
||||||
await _process_consumer_request(message, channel, rpc)
|
try:
|
||||||
|
await _process_consumer_request(message, channel, rpc)
|
||||||
|
except FreqtradeException:
|
||||||
|
logger.exception(f"Error processing request from {channel}")
|
||||||
|
response = WSErrorMessage(data='Error processing request')
|
||||||
|
|
||||||
|
await channel.send(response.dict(exclude_none=True))
|
||||||
|
|
||||||
|
|
||||||
async def channel_broadcaster(channel: WebSocketChannel, message_stream: MessageStream):
|
async def channel_broadcaster(channel: WebSocketChannel, message_stream: MessageStream):
|
||||||
|
|||||||
@@ -66,4 +66,9 @@ class WSAnalyzedDFMessage(WSMessageSchema):
|
|||||||
type: RPCMessageType = RPCMessageType.ANALYZED_DF
|
type: RPCMessageType = RPCMessageType.ANALYZED_DF
|
||||||
data: AnalyzedDFData
|
data: AnalyzedDFData
|
||||||
|
|
||||||
|
|
||||||
|
class WSErrorMessage(WSMessageSchema):
|
||||||
|
type: RPCMessageType = RPCMessageType.EXCEPTION
|
||||||
|
data: str
|
||||||
|
|
||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user