我正在使用2个AWS EC2(windows)进行分布式计算。我编写了2个python脚本,并通过网络驱动器在2个AWS实例之间共享它们。
一个脚本称为“ distributed_queue_manager.py”。这是在主服务器上运行的。它使用基本管理器来创建队列,并且该队列应该一直运行直到手动终止。
另一个脚本称为“ distributed_servant.py”。它在服务方服务器中运行。一开始,我尝试连接到队列。但是我总是收到以下消息。我重新启动服务器,然后重试,仍然出现相同的错误消息。
回溯(最近通话最近):
linkToQueue中的文件“ distributed_servant.py”,第22行 m.connect()
文件“ C:\ Program Files \ Anaconda3 \ lib \ multiprocessing \ managers.py”,在连接中位于行455 conn =客户端(self._address,authkey = self._authkey)
客户端中的文件“ C:\ Program Files \ Anaconda3 \ lib \ multiprocessing \ connection.py”,行487 c = SocketClient(地址)
文件“ C:\ Program Files \ Anaconda3 \ lib \ multiprocessing \ connection.py”,行614,在SocketClient中 s.connect(地址)
TimeoutError:[WinError 10060]连接尝试失败,因为在此之后被连接方未正确响应 一段时间,或由于连接的主机未能响应而建立的连接失败
如果我在同一服务器上运行脚本,则可以正常工作。我对此很陌生,有人可以帮我吗?
我检查了以下信息: (1)两台服务器位于同一区域,并且它们共享同一安全组。在此安全组中,允许所有流量。 (2)我检查了IP地址,它是主服务器的专用IP地址。 (3)我可以对主服务器执行ping操作。 (4)我关闭了每个服务器中受密码保护的共享。
“ distributed_queue_manager.py”
const some = 'some';
const response = [{
id: 1,
moreDetails: [{
code: '24',
value: some
},
{
code: '25',
value: some
},
{
code: '04',
value: some
}
],
days: 10
},
{
id: 2,
moreDetails: [{
code: '24',
value: some
},
{
code: '04',
value: some
}
],
days: 10
},
{
id: 3,
moreDetails: [{
code: '24',
value: some
},
{
code: '25',
value: some
}
],
days: 10
},
{
id: 4,
moreDetails: [{
code: '24',
value: some
},
{
code: '25',
value: some
},
{
code: '04',
value: some
}
],
days: 10
},
{
id: 5,
moreDetails: [{
code: '25',
value: some
},
{
code: '04',
value: some
}
],
days: 10
}
];
const objsWhichContainCode24And25 = response.filter(
obj => {
const codes = new Set(obj.moreDetails.map(({ code }) => code));
return ['24', '25'].every(code => codes.has(code));
}
);
console.log(objsWhichContainCode24And25);
-“ distributed_servant.py”
input_queue = Queue()
output_queue = Queue()
manager = BaseManager(address=('',50000), authkey = b'TestNBMDistributed')
manager.register('input_queue', callable = lambda:input_queue)
manager.register('output_queue', callable = lambda:output_queue)
cur_dir = os.path.dirname(os.path.abspath(__file__))
# open a txt file and write the ip address in the file
with open(cur_dir + '\\queue_ip.txt', 'w') as my_file:
q_ip_address = str(socket.gethostbyname(socket.gethostname()))
my_file.write(q_ip_address)
print('queue IP address written to file')
# have the queue run until it is manually terminated
server = manager.get_server()
server.serve_forever()