| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 589aff7 commit 3cfbcb9
1 file changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -73,6 +73,7 @@ def __init__( | |||
| 73 | 73 | sender_factory: SenderFactory | None = None, | |
| 74 | 74 | observers: list[StreamObserver] | None = None, | |
| 75 | 75 | listening: bool = True, | |
| 76 | + receive_timeout: float | None = None, | ||
| 76 | 77 | ) -> None: | |
| 77 | 78 | self._handler = handler | |
| 78 | 79 | self._writer = writer | |
@@ -103,6 +104,7 @@ def __init__( | |||
| 103 | 104 | ) | |
| 104 | 105 | self._dispatcher.start() | |
| 105 | 106 | self._observers: list[StreamObserver] = list(observers or []) | |
| 107 | + self._receive_timeout = receive_timeout | ||
| 106 | 108 | ||
| 107 | 109 | async def close(self) -> None: | |
| 108 | 110 | """Stop the receive loop and cancel any in-flight handler tasks.""" | |
@@ -151,7 +153,7 @@ async def send_notification(self, method: str, params: JsonValue | None = None) | |||
| 151 | 153 | async def _receive_loop(self) -> None: | |
| 152 | 154 | try: | |
| 153 | 155 | while True: | |
| 154 | - line = await self._reader.readline() | ||
| 156 | + line = await asyncio.wait_for(self._reader.readline(), timeout=self._receive_timeout) | ||
| 155 | 157 | if not line: | |
| 156 | 158 | break | |
| 157 | 159 | line = line.strip() | |
@@ -166,6 +168,8 @@ async def _receive_loop(self) -> None: | |||
| 166 | 168 | await self._process_message(message) | |
| 167 | 169 | except asyncio.CancelledError: | |
| 168 | 170 | return | |
| 171 | + except asyncio.TimeoutError: | ||
| 172 | + raise RequestError.internal_error({"details": "Agent timeout"}) from None | ||
| 169 | 173 | self._disconnect() | |
| 170 | 174 | ||
| 171 | 175 | async def _process_message(self, message: dict[str, Any]) -> None: | |
| Back | FazBrowse Home | New Git URL |
0 commit comments