Refactoring to use keep alive sessions.
This commit is contained in:
@@ -13,9 +13,7 @@ import numpy as np
|
||||
import requests
|
||||
from loguru import logger
|
||||
|
||||
from pipecat.audio.turn.base_turn_analyzer import (
|
||||
BaseEndOfTurnAnalyzer,
|
||||
)
|
||||
from pipecat.audio.turn.base_turn_analyzer import BaseEndOfTurnAnalyzer
|
||||
|
||||
|
||||
class RemoteSmartTurnAnalyzer(BaseEndOfTurnAnalyzer):
|
||||
@@ -27,30 +25,34 @@ class RemoteSmartTurnAnalyzer(BaseEndOfTurnAnalyzer):
|
||||
logger.error("REMOTE_SMART_TURN_URL is not set.")
|
||||
raise Exception("REMOTE_SMART_TURN_URL environment variable must be provided.")
|
||||
|
||||
# Use a session to reuse connections (keep-alive)
|
||||
self.session = requests.Session()
|
||||
self.session.headers.update({"Connection": "keep-alive"})
|
||||
|
||||
def _serialize_array(self, audio_array: np.ndarray) -> bytes:
|
||||
"""Serializes a NumPy array into bytes using np.save."""
|
||||
logger.debug("Serializing NumPy array to bytes...")
|
||||
buffer = io.BytesIO()
|
||||
np.save(buffer, audio_array) # Saves in npy format
|
||||
np.save(buffer, audio_array)
|
||||
serialized_bytes = buffer.getvalue()
|
||||
logger.debug(f"Serialized size: {len(serialized_bytes)} bytes")
|
||||
return serialized_bytes
|
||||
|
||||
def _send_raw_request(self, data_bytes: bytes):
|
||||
"""Sends the bytes as the raw request body."""
|
||||
headers = {"Content-Type": "application/octet-stream"}
|
||||
logger.debug(
|
||||
f"Sending {len(data_bytes)} bytes as raw body to {self.remote_smart_turn_url}..."
|
||||
)
|
||||
try:
|
||||
response = requests.post(
|
||||
self.remote_smart_turn_url, data=data_bytes, headers=headers, timeout=60
|
||||
) # Added timeout
|
||||
response = self.session.post(
|
||||
self.remote_smart_turn_url,
|
||||
data=data_bytes,
|
||||
headers=headers,
|
||||
timeout=60,
|
||||
)
|
||||
|
||||
logger.debug("\n--- Response ---")
|
||||
logger.debug(f"Status Code: {response.status_code}")
|
||||
|
||||
# Try to logger.debug JSON if successful, otherwise logger.debug text
|
||||
if response.ok:
|
||||
try:
|
||||
logger.debug("Response JSON:")
|
||||
@@ -62,7 +64,7 @@ class RemoteSmartTurnAnalyzer(BaseEndOfTurnAnalyzer):
|
||||
else:
|
||||
logger.debug("Response Content (Error):")
|
||||
logger.debug(response.text)
|
||||
response.raise_for_status() # Raise an exception for bad status codes
|
||||
response.raise_for_status()
|
||||
|
||||
except requests.exceptions.RequestException as e:
|
||||
logger.debug(f"Failed to send raw request to Daily Smart Turn: {e}")
|
||||
|
||||
Reference in New Issue
Block a user