如何解决Python opcua模块CancelledError
我目前正在尝试连接到 OPC UA 服务器,该服务器在我的本地设备上设置为测试环境。服务器不是我设置的,它不是在python中实现的(认为它可能是json)。 我想使用以下代码连接到它:
from opcua import Client
from opcua import ua
url = 'https://{MyPCsName}:8443/opcua'
client = Client(url)
client.connect()
但是出现了错误:
---------------------------------------------------------------------------
CancelledError Traceback (most recent call last)
<ipython-input-18-b87841b743a5> in <module>
5
6 client = Client(url)
----> 7 client.connect()
~\anaconda3\lib\site-packages\opcua\client\client.py in connect(self)
272 self.connect_socket()
273 try:
--> 274 self.send_hello()
275 self.open_secure_channel()
276 try:
~\anaconda3\lib\site-packages\opcua\client\client.py in send_hello(self)
314 Send OPC-UA hello to server
315 """
--> 316 ack = self.uaclient.send_hello(self.server_url.geturl(),self.max_messagesize,self.max_chunkcount)
317
318 # TODO: Handle ua.UaError
~\anaconda3\lib\site-packages\opcua\client\ua_client.py in send_hello(self,url,max_messagesize,max_chunkcount)
270
271 def send_hello(self,max_messagesize=0,max_chunkcount=0):
--> 272 return self._uasocket.send_hello(url,max_chunkcount)
273
274 def open_secure_channel(self,params):
~\anaconda3\lib\site-packages\opcua\client\ua_client.py in send_hello(self,max_chunkcount)
188 binmsg = uatcp_to_binary(ua.MessageType.Hello,hello)
189 self._socket.write(binmsg)
--> 190 ack = future.result(self.timeout)
191 return ack
192
~\anaconda3\lib\concurrent\futures\_base.py in result(self,timeout)
435
436 if self._state in [CANCELLED,CANCELLED_AND_NOTIFIED]:
--> 437 raise CancelledError()
438 elif self._state == FINISHED:
439 return self.__get_result()
CancelledError:
我浏览了 Git 存储库 https://github.com/FreeOpcUa/python-opcua 和“文档”https://python-opcua.readthedocs.io/en/latest/index.html(据我了解,这或多或少是源代码的副本...... ),但我找不到解决发生的错误的方法。
从服务器端来看,应该没问题,因为我可以在 UaExpert 上通过 'https://{MyPCsName}:8443/opcua'
访问服务器就好了。
真心希望得到您的帮助。
解决方法
从错误来看,Python 客户端似乎正在尝试使用 UA 二进制 TCP 传输进行连接,但您已获得 HTTPS 端点 URL。
也许您需要使用不同的端点 URL 来连接到此服务器?如果使用默认端口,则可能是 opc.tcp://{PCName}:4840/opcua
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。