Skip to content

Commit 7351dad

Browse files
authored
Use Client.check_server_alive_interval_factor (#110)
1 parent 7560bf5 commit 7351dad

File tree

3 files changed

+8
-5
lines changed

3 files changed

+8
-5
lines changed

packages/stompman/stompman/client.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -175,4 +175,4 @@ async def subscribe_with_manual_ack(
175175
def is_alive(self) -> bool:
176176
return (
177177
self._connection_manager._active_connection_state or False # noqa: SLF001
178-
) and self._connection_manager._active_connection_state.is_alive() # noqa: SLF001
178+
) and self._connection_manager._active_connection_state.is_alive(self.check_server_alive_interval_factor) # noqa: SLF001

packages/stompman/stompman/connection_manager.py

+6-3
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,13 @@ class ActiveConnectionState:
2828
lifespan: "AbstractConnectionLifespan"
2929
server_heartbeat: Heartbeat
3030

31-
def is_alive(self) -> bool:
31+
def is_alive(self, check_server_alive_interval_factor: int) -> bool:
3232
if not (last_read_time := self.connection.last_read_time):
3333
return True
34-
return (self.server_heartbeat.will_send_interval_ms / 1000) > (time.time() - last_read_time)
34+
35+
return (self.server_heartbeat.will_send_interval_ms / 1000 * check_server_alive_interval_factor) > (
36+
time.time() - last_read_time
37+
)
3538

3639

3740
@dataclass(kw_only=True, slots=True)
@@ -99,7 +102,7 @@ async def _check_server_heartbeat_forever(self, receive_heartbeat_interval_ms: i
99102
await asyncio.sleep(receive_heartbeat_interval_seconds * self.check_server_alive_interval_factor)
100103
if not self._active_connection_state:
101104
continue
102-
if not self._active_connection_state.is_alive():
105+
if not self._active_connection_state.is_alive(self.check_server_alive_interval_factor):
103106
self._active_connection_state = None
104107

105108
async def _create_connection_to_one_server(

packages/stompman/test_stompman/test_aliveness.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,5 @@ async def test_connection_alive(is_alive: bool) -> None: # noqa: FBT001
1717
)
1818
client = await EnrichedClient(connection_class=connection_class).__aenter__()
1919
assert client._connection_manager._active_connection_state
20-
client._connection_manager._active_connection_state.connection.last_read_time = time.time() - 1 + is_alive
20+
client._connection_manager._active_connection_state.connection.last_read_time = time.time() if is_alive else 10
2121
assert client.is_alive() == is_alive

0 commit comments

Comments
 (0)