Skip to content
Merged
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
10 changes: 7 additions & 3 deletions python/src/open_echo/web.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ async def process_echo(self, echo: EchoPacket):

async def run_forever(self):
"""Continuously read serial data and emit processed arrays. Supports live settings update and restart."""
retry_delay = 1 # seconds; doubles on each consecutive failure up to 30s max
while True:
if self.settings is None:
log.warning("Settings not initialized, waiting...")
Expand All @@ -99,12 +100,15 @@ async def run_forever(self):
async for pkt in reader:
await self.process_echo(pkt)
if self._restart_event.is_set():
print("Restart event set, breaking loop")
log.info("Restart event set, breaking loop")
break
retry_delay = 1 # reset backoff on clean exit
await self._restart_event.wait()
except Exception as e:
log.error(f"❌ Error in EchoReader: {e}", exc_info=e)

await self._restart_event.wait()
log.info(f"Retrying in {retry_delay}s...")
await asyncio.sleep(retry_delay)
retry_delay = min(retry_delay * 2, 30)


connection_manager = ConnectionManager()
Expand Down