improve error handling

This commit is contained in:
Wolfgang Hottgenroth
2022-02-04 22:56:20 +01:00
parent 34be24869a
commit 0e5a22a481
2 changed files with 17 additions and 11 deletions

View File

@ -1,5 +1,5 @@
import asyncio import asyncio
from asyncua import Client from asyncua import Client, ua
import threading import threading
from loguru import logger from loguru import logger
from DataObject import DataObject from DataObject import DataObject
@ -24,15 +24,21 @@ class OpcUaRequester(threading.Thread):
async def opcUaRequesterInnerLoop(self): async def opcUaRequesterInnerLoop(self):
while not self.killBill: while not self.killBill:
async with Client(url=self.url, timeout=10.0) as client: try:
for nodeSpec in self.nodes: async with Client(url=self.url, timeout=10.0) as client:
logger.debug(f"Trying {self.name} {self.url} ns={nodeSpec['ns']};{nodeSpec['n']}") for nodeSpec in self.nodes:
node = client.get_node(f"ns={nodeSpec['ns']};{nodeSpec['n']}") try:
value = await node.read_value() logger.debug(f"Trying {self.name} {self.url} ns={nodeSpec['ns']};{nodeSpec['n']}")
displayName = nodeSpec['d'] if ('d' in nodeSpec) else (await node.read_display_name()).Text node = client.get_node(f"ns={nodeSpec['ns']};{nodeSpec['n']}")
logger.debug(f"Got: {displayName=} = {value=}") value = await node.read_value()
self.queue.put(DataObject(self.name, nodeSpec['ns'], displayName, value)) displayName = nodeSpec['d'] if ('d' in nodeSpec) else (await node.read_display_name()).Text
await asyncio.sleep(self.delay) logger.debug(f"Got: {displayName=} = {value=}")
self.queue.put(DataObject(self.name, nodeSpec['ns'], displayName, value))
except ua.UaError as e:
logger.error(f"UaError in inner OPC-UA loop: {type(e)} {e}")
await asyncio.sleep(self.delay)
except TimeoutError as e:
logger.error(f"Timeout in inner OPC-UA loop")
def run(self): def run(self):
loop = asyncio.new_event_loop() loop = asyncio.new_event_loop()

View File

@ -14,7 +14,7 @@
{ "ns": 0, "n": "i=345", "d": "pv" }, { "ns": 0, "n": "i=345", "d": "pv" },
{ "ns": 0, "n": "i=348", "d": "sv" }, { "ns": 0, "n": "i=348", "d": "sv" },
{ "ns": 0, "n": "i=351", "d": "tv" }, { "ns": 0, "n": "i=351", "d": "tv" },
{ "ns": 0, "n": "i=354", "d": "qv" } { "ns": 0, "n": "i=35400", "d": "qv" }
] ]
}, },
{ {