【发布时间】:2011-07-25 14:38:01
【问题描述】:
新手和第一个问题。
我正在使用 Python 的多处理模块,该模块目前正在我的本地主机上创建一个管理器和几个 (45) 进程。
我的经理设置如下:
manager = QueueManager(address=('', 50000), authkey='abracadabra')
manager.get_server().serve_forever()
我还想在另一台计算机上远程创建一些其他客户端进程。所以,假设我的 IP 是 a.b.c.d,远程计算机中客户端的 Manager 设置如下:
manager = QueueManager(address=('a.b.c.d', 50000), authkey='abracadabra')
manager.connect()
(是的,它是从文档中复制粘贴的)。
但是,我运行服务器并且 localhost 中的所有 45 个进程都很好,然后我运行远程客户端,我得到了这个:
Traceback (most recent call last):
File "govmap-parallel-crawler-client.py", line 144, in <module>
manager.connect()
File "/usr/lib/python2.6/multiprocessing/managers.py", line 474, in connect
conn = Client(self._address, authkey=self._authkey)
File "/usr/lib/python2.6/multiprocessing/connection.py", line 134, in Client
c = SocketClient(address)
File "/usr/lib/python2.6/multiprocessing/connection.py", line 252, in SocketClient
s.connect(address)
File "<string>", line 1, in connect
socket.error: [Errno 110] Connection timed out
两台计算机可以毫无问题地相互 ping 和 ssh。
我的猜测:中间有一个(或两个!)防火墙使连接变得不可能。这是正确的吗?
如果是:有没有办法使用安全的已知端口来避开防火墙,或者可能是更礼貌的解决方案?
如果不是:发生了什么?
谢谢!!
【问题讨论】:
标签: python sockets timeout multiprocessing firewall