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:
parent
3d2abe9e70
commit
98a3254c88
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue