improve error handling
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
import asyncio
|
||||
from asyncua import Client
|
||||
from asyncua import Client, ua
|
||||
import threading
|
||||
from loguru import logger
|
||||
from DataObject import DataObject
|
||||
@ -24,15 +24,21 @@ class OpcUaRequester(threading.Thread):
|
||||
|
||||
async def opcUaRequesterInnerLoop(self):
|
||||
while not self.killBill:
|
||||
async with Client(url=self.url, timeout=10.0) as client:
|
||||
for nodeSpec in self.nodes:
|
||||
logger.debug(f"Trying {self.name} {self.url} ns={nodeSpec['ns']};{nodeSpec['n']}")
|
||||
node = client.get_node(f"ns={nodeSpec['ns']};{nodeSpec['n']}")
|
||||
value = await node.read_value()
|
||||
displayName = nodeSpec['d'] if ('d' in nodeSpec) else (await node.read_display_name()).Text
|
||||
logger.debug(f"Got: {displayName=} = {value=}")
|
||||
self.queue.put(DataObject(self.name, nodeSpec['ns'], displayName, value))
|
||||
await asyncio.sleep(self.delay)
|
||||
try:
|
||||
async with Client(url=self.url, timeout=10.0) as client:
|
||||
for nodeSpec in self.nodes:
|
||||
try:
|
||||
logger.debug(f"Trying {self.name} {self.url} ns={nodeSpec['ns']};{nodeSpec['n']}")
|
||||
node = client.get_node(f"ns={nodeSpec['ns']};{nodeSpec['n']}")
|
||||
value = await node.read_value()
|
||||
displayName = nodeSpec['d'] if ('d' in nodeSpec) else (await node.read_display_name()).Text
|
||||
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):
|
||||
loop = asyncio.new_event_loop()
|
||||
|
@ -14,7 +14,7 @@
|
||||
{ "ns": 0, "n": "i=345", "d": "pv" },
|
||||
{ "ns": 0, "n": "i=348", "d": "sv" },
|
||||
{ "ns": 0, "n": "i=351", "d": "tv" },
|
||||
{ "ns": 0, "n": "i=354", "d": "qv" }
|
||||
{ "ns": 0, "n": "i=35400", "d": "qv" }
|
||||
]
|
||||
},
|
||||
{
|
||||
|
Reference in New Issue
Block a user