Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions packages/stompman/stompman/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ class Client:
connection_confirmation_timeout: int = 2
disconnect_confirmation_timeout: int = 2
check_server_alive_interval_factor: int = 3
_ff_disable_server_heartbeat_check: bool = False
"""Client will check if server alive `server heartbeat interval` times `interval factor`"""

connection_class: type[AbstractConnection] = Connection
Expand Down Expand Up @@ -74,6 +75,7 @@ def __post_init__(self) -> None:
read_max_chunk_size=self.read_max_chunk_size,
write_retry_attempts=self.write_retry_attempts,
check_server_alive_interval_factor=self.check_server_alive_interval_factor,
_ff_disable_server_heartbeat_check=self._ff_disable_server_heartbeat_check,
ssl=self.ssl,
)

Expand Down
7 changes: 5 additions & 2 deletions packages/stompman/stompman/connection_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ class ConnectionManager:
read_max_chunk_size: int
write_retry_attempts: int
check_server_alive_interval_factor: int
_ff_disable_server_heartbeat_check: bool

_active_connection_state: ActiveConnectionState | None = field(default=None, init=False)
_reconnect_lock: asyncio.Lock = field(init=False, default_factory=asyncio.Lock)
Expand Down Expand Up @@ -86,8 +87,10 @@ def _restart_heartbeat_tasks(self, server_heartbeat: Heartbeat) -> None:
self._send_heartbeat_task = self._task_group.create_task(
self._send_heartbeats_forever(server_heartbeat.want_to_receive_interval_ms)
)
self._check_server_heartbeat_task = self._task_group.create_task(
self._check_server_heartbeat_forever(server_heartbeat.will_send_interval_ms)
self._check_server_heartbeat_task = (
self._task_group.create_task(self._check_server_heartbeat_forever(server_heartbeat.will_send_interval_ms))
if not self._ff_disable_server_heartbeat_check
else self._task_group.create_task(asyncio.sleep(0))
)

async def _send_heartbeats_forever(self, send_heartbeat_interval_ms: int) -> None:
Expand Down
1 change: 1 addition & 0 deletions packages/stompman/test_stompman/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ class EnrichedConnectionManager(ConnectionManager):
write_retry_attempts: int = 3
ssl: Literal[True] | SSLContext | None = None
check_server_alive_interval_factor: int = 3
_ff_disable_server_heartbeat_check: bool = False


DataclassType = TypeVar("DataclassType")
Expand Down
Loading