Skip to content

Commit 2b05b48

Browse files
authored
fix: update connection counter instead of inc/dec (#237)
* fix: update connection counter instead of inc/dec
1 parent 1830302 commit 2b05b48

File tree

2 files changed

+13
-25
lines changed

2 files changed

+13
-25
lines changed

skynet/modules/monitoring.py

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -138,28 +138,14 @@
138138
metrics.requests(metric_namespace=PROMETHEUS_NAMESPACE, metric_subsystem=PROMETHEUS_SUMMARIES_SUBSYSTEM),
139139
)
140140

141-
ws_connection_count = 0
142141

142+
async def update_ws_conn_count(num: int):
143+
CONNECTIONS_METRIC.set(num)
144+
set_ts_stress_level(num)
143145

144-
def inc_ws_conn_count():
145-
global ws_connection_count
146-
ws_connection_count += 1
147-
CONNECTIONS_METRIC.set(ws_connection_count)
148-
TRANSCRIBE_CONNECTIONS_COUNTER.inc()
149-
set_ts_stress_level()
150146

151-
152-
def dec_ws_conn_count():
153-
global ws_connection_count
154-
if ws_connection_count > 0:
155-
ws_connection_count -= 1
156-
CONNECTIONS_METRIC.set(ws_connection_count)
157-
set_ts_stress_level()
158-
159-
160-
def set_ts_stress_level():
161-
global ws_connection_count
162-
if ws_connection_count > 0:
163-
TRANSCRIBE_STRESS_LEVEL_METRIC.set(ws_connection_count / whisper_max_connections)
147+
def set_ts_stress_level(conns: int):
148+
if conns > 0:
149+
TRANSCRIBE_STRESS_LEVEL_METRIC.set(conns / whisper_max_connections)
164150
else:
165151
TRANSCRIBE_STRESS_LEVEL_METRIC.set(0.0)

skynet/modules/stt/streaming_whisper/connection_manager.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from skynet.auth.jwt import authorize
77
from skynet.env import bypass_auth, whisper_flush_interval
88
from skynet.logs import get_logger
9-
from skynet.modules.monitoring import dec_ws_conn_count, inc_ws_conn_count
9+
from skynet.modules.monitoring import update_ws_conn_count
1010
from skynet.modules.stt.streaming_whisper.meeting_connection import MeetingConnection
1111
from skynet.modules.stt.streaming_whisper.utils import utils
1212

@@ -34,9 +34,9 @@ async def connect(self, websocket: WebSocket, meeting_id: str, auth_token: str |
3434
if self.flush_audio_task is None:
3535
loop = asyncio.get_running_loop()
3636
self.flush_audio_task = loop.create_task(self.flush_working_audio_worker())
37-
inc_ws_conn_count()
38-
log.info(f'Meeting with id {meeting_id} started. Ongoing meetings {len(self.connections)}')
39-
37+
current_connections = len(self.connections)
38+
log.info(f'Meeting with id {meeting_id} started. Ongoing meetings {current_connections}')
39+
await update_ws_conn_count(current_connections)
4040
return connection
4141

4242
async def process(self, connection: MeetingConnection, chunk: bytes, chunk_timestamp: int):
@@ -73,7 +73,9 @@ async def disconnect(self, connection: MeetingConnection, already_closed=False):
7373
else:
7474
# mark connection as disconnected
7575
connection.disconnect()
76-
dec_ws_conn_count()
76+
remaining_connections = len(self.connections)
77+
log.info(f'Disconnected meeting {connection.meeting_id}, remaining connections {remaining_connections}')
78+
await update_ws_conn_count(remaining_connections)
7779

7880
async def flush_working_audio_worker(self):
7981
"""

0 commit comments

Comments
 (0)