• 使用asyncua模块的call_method方法调用OPC UA的Server端方法报错:asyncio.exceptions.TimeoutError


    使用asyncua模块的call_method方法调用OPC UA的Server端方法报错:asyncio.exceptions.TimeoutError

    报错信息如下:

    在这里插入图片描述

    Traceback (most recent call last):
    asyncio.run(main())
    File “D:\miniconda3\envs\py31013\lib\asyncio\runners.py”, line 44, in run
    return loop.run_until_complete(main)
    File “D:\miniconda3\envs\py31013\lib\asyncio\base_events.py”, line 649, in run_until_complete
    return future.result()
    File “”, line 60, in main
    async with Client(url=url) as client:
    File “D:\miniconda3\envs\py31013\lib\site-packages\asyncua\client\client.py”, line 98, in aexit
    await self.disconnect()
    File “D:\miniconda3\envs\py31013\lib\site-packages\asyncua\client\client.py”, line 348, in disconnect
    await self.close_session()
    File “D:\miniconda3\envs\py31013\lib\site-packages\asyncua\client\client.py”, line 703, in close_session
    return await self.uaclient.close_session(True)
    File “D:\miniconda3\envs\py31013\lib\site-packages\asyncua\client\ua_client.py”, line 366, in close_session
    data = await self.protocol.send_request(request)
    File “D:\miniconda3\envs\py31013\lib\site-packages\asyncua\client\ua_client.py”, line 167, in send_request
    data = await asyncio.wait_for(self._send_request(request, timeout, message_type), timeout if timeout else None)
    File “D:\miniconda3\envs\py31013\lib\asyncio\tasks.py”, line 458, in wait_for
    raise exceptions.TimeoutError() from exc
    asyncio.exceptions.TimeoutError

    解决asyncio.exceptions.TimeoutError的方法如下:

    OPC UA Client python asyncua error when connecting and disconnecting

    在这里插入图片描述

    这篇文章中说明了报错:asyncio.exceptions.TimeoutError的原因,是由于call_method调用的方法执行时间太长了,但是Client端同步执行的检查服务是否处于在线状态的背景任务执行超时了,最终导致抛出报错:asyncio.exceptions.TimeoutError,拿不到Server执行调用方法后的结果。

    解决措施是在开启Client会话的函数里面增加timeout超时时间,并且将timeout设置大于Client调用Server端方法的执行时间,将timeout设置成一个比较大的数。

  • 相关阅读:
    华为机试:连续出牌数量
    【译】如何在 Visual Studio 中安装 GitHub Copilot
    NeurIPS 2023丨说话人识别:语音解耦与自监督
    03 使用阶段 Latex文章编辑
    600+ 道 Java面试题及答案整理(2022最新版)
    兴趣变高薪副业,知名插画师走尺带你感受插画的魅力
    SCI常用经典词和常用句型(一)
    13 Go的错误处理
    【经典】请求拦截,相应拦截vue3封装,使用dom封装typescript接口
    Jenkins Pipeline详细教程
  • 原文地址:https://blog.csdn.net/Logintern09/article/details/139802803