AWS分布式计算-TimeoutError:[WinError 10060]连接尝试失败

时间:2019-05-19 03:16:30

标签: python-3.x amazon-ec2 distributed-computing

我正在使用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()

0 个答案:

没有答案