fix: Check protocol server status before attempting connections in signals endpoint

- Added check for settings.opcua_enabled and settings.modbus_enabled before initializing ProtocolDataCollector
- This prevents connection attempts when protocol servers are disabled in production
- Reduces error logs and improves performance
This commit is contained in:
openhands 2025-11-01 16:10:55 +00:00
parent 3d2abe9e70
commit 98a3254c88
1 changed files with 30 additions and 24 deletions

View File

@ -620,33 +620,39 @@ async def get_signals():
signals = [] signals = []
# Try to get data from protocol servers, fallback to mock data if servers are not available # Check if protocol servers are enabled before trying to connect
try: if settings.opcua_enabled or settings.modbus_enabled:
# Initialize protocol data collector # Try to get data from protocol servers, fallback to mock data if servers are not available
from src.dashboard.protocol_clients import ProtocolDataCollector try:
collector = ProtocolDataCollector() # Initialize protocol data collector
from src.dashboard.protocol_clients import ProtocolDataCollector
collector = ProtocolDataCollector()
# Collect data from all pumps across all protocols # Collect data from all pumps across all protocols
for station_id, station in stations.items(): for station_id, station in stations.items():
pumps = pumps_by_station.get(station_id, []) pumps = pumps_by_station.get(station_id, [])
for pump in pumps: for pump in pumps:
pump_id = pump['pump_id'] pump_id = pump['pump_id']
# Get signal data from protocol servers # Get signal data from protocol servers
pump_signals = await collector.get_signal_data(station_id, pump_id) pump_signals = await collector.get_signal_data(station_id, pump_id)
signals.extend(pump_signals) signals.extend(pump_signals)
# Clean up connections # Clean up connections
await collector.cleanup() await collector.cleanup()
# If no signals were retrieved from protocol servers, use mock data # If no signals were retrieved from protocol servers, use mock data
if not signals: if not signals:
logger.warning("no_signals_from_protocol_servers", fallback="using_mock_data") logger.warning("no_signals_from_protocol_servers", fallback="using_mock_data")
signals = await _generate_mock_signals(stations, pumps_by_station)
except Exception as e:
logger.error("failed_to_get_protocol_data", error=str(e), fallback="using_mock_data")
# Fallback to mock data
signals = await _generate_mock_signals(stations, pumps_by_station) signals = await _generate_mock_signals(stations, pumps_by_station)
except Exception as e: else:
logger.error("failed_to_get_protocol_data", error=str(e), fallback="using_mock_data") # Protocol servers are disabled, use mock data
# Fallback to mock data logger.info("protocol_servers_disabled", fallback="using_mock_data")
signals = await _generate_mock_signals(stations, pumps_by_station) signals = await _generate_mock_signals(stations, pumps_by_station)
# Add system status signals # Add system status signals