diff --git a/CHANGELOG.md b/CHANGELOG.md index 55b92591a..e77aa2950 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to **Pipecat** will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## [Unreleased] ### Added @@ -48,6 +48,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fixed an issue that would cause system frames to not be processed with higher priority than other frames. This could cause slower interruption times. +### Fixed + +- Fixed an issue where retrying a websocket connection error would result in an + error. + ### Other - Added foundational example `15a-switch-languages.py` to release evals. It is diff --git a/src/pipecat/services/websocket_service.py b/src/pipecat/services/websocket_service.py index ff4f67dd3..17a911366 100644 --- a/src/pipecat/services/websocket_service.py +++ b/src/pipecat/services/websocket_service.py @@ -12,6 +12,7 @@ from typing import Awaitable, Callable, Optional import websockets from loguru import logger +from websockets.exceptions import ConnectionClosedOK from websockets.protocol import State from pipecat.frames.frames import ErrorFrame @@ -82,12 +83,10 @@ class WebsocketService(ABC): try: await self._receive_messages() retry_count = 0 # Reset counter on successful message receive - if self._websocket and self._websocket.state is State.CLOSED: - raise websockets.ConnectionClosedOK( - self._websocket.close_rcvd, - self._websocket.close_sent, - self._websocket.close_rcvd_then_sent, - ) + except ConnectionClosedOK as e: + # Normal closure, don't retry + logger.debug(f"{self} connection closed normally: {e}") + break except Exception as e: message = f"{self} error receiving messages: {e}" logger.error(message)