本文主要是介绍RPC远程调用时TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
补充,在公司测试时虚拟机和主机连接测试时又出现了:port 22:No route to host的问题,查了一下发现时因为ip网段不同,因为虚拟机事直接挂起的没有关机,所有ip网段还是家里的网段,重启下就变回来了。
最近要学gRPC,先看了看RPC,上班的时候虚拟机测试都没问题,回家后想用台式和笔记本两台电脑测试下,结果发现台式访问笔记本没问题,笔记本访问台式会报错,报错信息如下,
TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
百度了一下相关问题太少,最开始以为是不是端口问题,换了几个端口不行,又想了想局域网通信是不是防火墙的问题的,果然发现台式机防火墙开着呢,关掉之后就好了,笔记本如果开防火墙同样连不上,确认是防火墙的问题了。
最后附上代码:
服务端:
#! /usr/bin/env python
# -*- coding: utf-8 -*-__author__ = 'xieyanke'from xmlrpc.server import SimpleXMLRPCRequestHandler, SimpleXMLRPCServer__HOST = '192.168.3.31'
__PORT = 8111class RPCHandler(SimpleXMLRPCRequestHandler):rpc_paths = ('/rpc', # 定义 RPC 接口的请求地址)with SimpleXMLRPCServer((__HOST, __PORT), requestHandler=RPCHandler) as rpcserver:rpcserver.register_introspection_functions()def formate_data(str):return str.upper()def func1(num):return(num*num)rpcserver.register_function(formate_data, 'formate_data') # 这里 'formate_data' 可以不与自定义的方法名字相同,只要 server 端与 client 端做好约定即可rpcserver.register_function(func1, 'call_rpc') # 这里 'formate_data' 可以不与自定义的方法名字相同,只要 server 端与 client 端做好约定即可rpcserver.serve_forever()
客户端:
#! /usr/bin/env python
# -*- coding: utf-8 -*-__author__ = 'xieyanke'import xmlrpc.client__HOST = '192.168.3.21'
__PORT = '8112'server = xmlrpc.client.ServerProxy('http://' + __HOST + ':' + __PORT + '/rpc') # 这里需要注意的是结尾的 ‘/' 必须存在,如果不绑定根,xmlrpc client 默认绑定的 url 为 host:port/RPC2# print(server.formate_data('hello,world!'))
print(server.call_rpc(4))
代码基本都是用的这位老师的,随便改了测试下:
https://www.jianshu.com/p/2fc47e4a2bbb
这篇关于RPC远程调用时TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!