Python rpyc“socket.error:[Errno 113]没有到主机的路由”
Posted
技术标签:
【中文标题】Python rpyc“socket.error:[Errno 113]没有到主机的路由”【英文标题】:Python rpyc "socket.error: [Errno 113] No route to host" 【发布时间】:2014-02-26 05:29:52 【问题描述】:我有两台机器使用python rpyc
,一台是server(ip:10.0.3.120)
,另一台是client(ip:10.0.3.197)。
代码如下:
服务器(ip:10.0.3.120)
from rpyc import Service
from rpyc.utils.server import ThreadedServer
class TestService(Service):
def exposed_test(self, num):
return num + 1
sr = ThreadedServer(TestService, port=9999, auto_register=False)
sr.start()
客户端 (ip:10.0.3.129)
import rpyc
conn = rpyc.connect('10.0.3.120', 9999)
cResult = conn.root.test(11)
conn.close()
print cResult
当我运行server
和client
时客户端显示此错误:
Traceback (most recent call last):
File "rpyc_client.py", line 4, in <module>
conn = rpyc.connect('10.0.3.120', 9999)
File "/usr/local/lib/python2.7/site-packages/rpyc-3.2.3-py2.7.egg/rpyc/utils/factory.py", line 89, in connect
s = SocketStream.connect(host, port, ipv6 = ipv6)
File "/usr/local/lib/python2.7/site-packages/rpyc-3.2.3-py2.7.egg/rpyc/core/stream.py", line 114, in connect
return cls(cls._connect(host, port, **kwargs))
File "/usr/local/lib/python2.7/site-packages/rpyc-3.2.3-py2.7.egg/rpyc/core/stream.py", line 92, in _connect
s.connect((host, port))
File "/usr/local/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
connect
方法如何使用?
如果我使用公网IP搭建rpyc
服务器,我可以在家里连接吗??非常感谢!
【问题讨论】:
【参考方案1】:首先,检查连接命令 ping。在您的代码服务器中运行在本地主机上。为了可以从您的正确地址或 * 外部访问它(然后服务器将在当前机器的所有可能地址上运行)。我认为 auto_register 必须等于 None。
from rpyc import Service
from rpyc.utils.server import ThreadedServer
class TestService(Service):
def exposed_test(self, num):
return num + 1
sr = ThreadedServer(TestService, hostname='10.0.3.120', port=9999, auto_register=None)
# or sr = ThreadedServer(TestService, hostname='*', port=9999, auto_register=None)
sr.start()
【讨论】:
【参考方案2】:只需使用此命令删除客户端上的所有iptables
规则:
iptables -F
【讨论】:
为什么你认为这会有所帮助?此外,您可能会在不知道这将如何提供帮助的情况下放弃大量网络保护。 此解决方法假设您的机器在 Intranet 上而不是在 Internet 上,正如您所强调的,当您处于真正的开放网络环境中时,它可能会遇到很多网络威胁。 我明白了。我只是建议您添加一个解释,说明为什么您认为 iptables 命令将有助于为可能不像您那样熟悉 iptables 的人解决问题。此外,最好在您的评论中添加句子作为原始答案的免责声明。基本上,如果您编辑答案并添加此信息,您可能会获得更好的成功。以上是关于Python rpyc“socket.error:[Errno 113]没有到主机的路由”的主要内容,如果未能解决你的问题,请参考以下文章
带有 RPYC 的多处理 Python “ValueError:酸洗已禁用”
python专属的Remote Produce Call框架:rpyc