Skip to content

Commit

Permalink
fix: typing
Browse files Browse the repository at this point in the history
  • Loading branch information
tilsche committed Mar 15, 2024
1 parent e296da0 commit 8e282b6
Showing 1 changed file with 7 additions and 3 deletions.
10 changes: 7 additions & 3 deletions metricq_sink_websocket/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

import aiohttp
from aiohttp.web import Request
from metricq import JsonDict, get_logger
from metricq import Metric, get_logger

from .web_socket import MetricqWebSocketResponse

Expand All @@ -17,15 +17,19 @@ async def websocket_handler(request: Request) -> MetricqWebSocketResponse:
ws = MetricqWebSocketResponse(sink)
await ws.prepare(request)
logger.info("Websocket opened")
metrics: set[JsonDict] = set()
metrics: set[Metric] = set()
try:
async for msg in ws:
if msg.type == aiohttp.WSMsgType.TEXT:
logger.debug("Parsing message: {}", msg.data)
try:
msg_data = json.loads(msg.data)
if msg_data["function"] == "subscribe":
new_metrics = set(msg_data["metrics"])
if not isinstance(list, msg_data["metrics"]) or any(
not isinstance(m, str) for m in msg_data["metrics"]
):
raise TypeError("metrics must be a list of strings")
new_metrics: set[str] = set(msg_data["metrics"])
metadata = await sink.subscribe_ws(ws, new_metrics - metrics)
await ws.send_metadata(metadata)
metrics |= new_metrics
Expand Down

0 comments on commit 8e282b6

Please sign in to comment.