Skip to content

Commit 3c63e89

Browse files
committed
Simplify heartbeating logic and connection state checks
1 parent 2003372 commit 3c63e89

File tree

2 files changed

+7
-21
lines changed

2 files changed

+7
-21
lines changed

packages/stompman/stompman/client.py

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
import asyncio
2-
import inspect
3-
import time
42
from collections.abc import AsyncGenerator, Awaitable, Callable, Coroutine
53
from contextlib import AsyncExitStack, asynccontextmanager
64
from dataclasses import dataclass, field
@@ -123,18 +121,10 @@ async def _monitor_server_aliveness(self, server_heartbeat_interval_ms: int) ->
123121
server_heartbeat_interval_seconds = server_heartbeat_interval_ms / 1000
124122
while True:
125123
await asyncio.sleep(server_heartbeat_interval_seconds * self.check_server_alive_interval_factor)
126-
last_read_time_ms = (
127-
self._connection_manager._active_connection_state
128-
and self._connection_manager._active_connection_state.connection.last_read_time_ms
129-
)
130-
if not last_read_time_ms:
131-
print("No last_Read_time_ms")
124+
if not self._connection_manager._active_connection_state:
132125
continue
133-
if (t := time.time() - last_read_time_ms) > server_heartbeat_interval_seconds:
134-
print("reset time", t)
126+
if not self._connection_manager._active_connection_state.is_alive():
135127
self._connection_manager._active_connection_state = None
136-
else:
137-
print("no reset")
138128

139129
async def _listen_to_frames(self) -> None:
140130
async with asyncio.TaskGroup() as task_group:

packages/stompman/stompman/connection_manager.py

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ class ActiveConnectionState:
2828
lifespan: "AbstractConnectionLifespan"
2929
server_heartbeat: Heartbeat
3030

31+
def is_alive(self) -> bool:
32+
if not (last_read_time_ms := self.connection.last_read_time_ms):
33+
return True
34+
return (self.server_heartbeat.will_send_interval_ms / 1000) > (time.time() - last_read_time_ms)
35+
3136

3237
@dataclass(kw_only=True, slots=True)
3338
class ConnectionManager:
@@ -129,15 +134,6 @@ async def _get_active_connection_state(self) -> ActiveConnectionState:
129134
def _clear_active_connection_state(self) -> None:
130135
self._active_connection_state = None
131136

132-
def is_alive(self) -> bool:
133-
if not self._active_connection_state:
134-
return False
135-
if not (last_read_time_ms := self._active_connection_state.connection.last_read_time_ms):
136-
return True
137-
return self._active_connection_state.server_heartbeat.will_send_interval_ms / 1000 > (
138-
time.time() - last_read_time_ms
139-
)
140-
141137
async def write_heartbeat_reconnecting(self) -> None:
142138
for _ in range(self.write_retry_attempts):
143139
connection_state = await self._get_active_connection_state()

0 commit comments

Comments
 (0)