我正在使用多处理模块创建一个远程队列,我收到一个套接字错误: “[Errno 10061]无法建立连接,因为目标机器主动拒绝它”
我的服务器代码非常基础:
from multiprocessing.managers import BaseManager
import Queue
queue = Queue.Queue()
class QueueManager(BaseManager): pass
QueueManager.register('get_queue', callable=lambda:queue)
m = QueueManager(address=('127.0.0.1', 50000), authkey='test')
s = m.get_server()
s.serve_forever()
我需要服务器做的就是保住一份工作,然后通过让工人查询队列并拉出工作来处理。
我的客户端正在访问机器,以便将作业放入队列:
import uuid
from multiprocessing.managers import BaseManager
class QueueManager(BaseManager): pass
QueueManager.register('get_queue')
m = QueueManager(address=('machine ip', 50000), authkey='test')
m.connect()
queue = m.get_queue()
queue.put(r"%s" % uuid.uuid4().get_hex())
queue.put(r%s" % uuid.uuid4().get_hex())
调用get()来获取队列中的项目。
当我尝试访问远程队列时,出现以下错误: “[Errno 10061]没有联系,因为目标机器主动拒绝它”,如上所述。如果我在同一台机器上运行代码它工作正常,但是当我在许多机器中分发它时,客户端无法命中服务器。
我可以很好地ping这台机器,所以我的第一个想法是禁用防火墙。我这样做仍然得到套接字错误。
我现在正在使用Windows 7进行开发。
有什么建议吗?
答案 0 :(得分:2)
您的服务器代码正在侦听环回网络接口127.0.0.1。此接口不能从外部网络(如连接的以太网接口)获得。
如果要从任何网络接口访问服务器,请在服务器中使用空主机名。
m = QueueManager(address=('', 50000), authkey='test')
答案 1 :(得分:2)
看起来你在监听环回地址。如果您尝试从外部联系服务器,这将不起作用...
尝试将127.0.0.1更改为服务器中的计算机地址...