本地计算机和AWS之间的多处理?

时间:2019-02-04 14:28:17

标签: python amazon-ec2 multiprocessing

我开发了几个脚本,这些脚本使用来自multiprocessing.managers的BaseManager一起工作。它们都可以在AWS或本地一起正常运行。但是现在我想把事情混在一起。我想让AWS保持便宜,并在本地计算机上使用我的GPU。

我如何连接到“服务器”,该服务器创建在AWS上运行的IPC,队列等?服务器是在AWS机器上使用ip 127.0.0.1创建的。
我有一个安全组,非常适用于SSH,MySQL和其他功能,我的本地计算机的IP用于SSH等。

在本地计算机上的脚本中,我尝试使用以下IP地址连接到AWS上的服务器:
   -公共DNS
   -IPv4公用IP
   -私有IP

这些似乎都不起作用。我不是网络专家,下面的问题比我的水平高一点,但是,我是否需要使用OpenVPN创建通往VPC的隧道?

还有其他想法,建议和帮助吗? 请参阅下面的服务器代码(本地脚本和其他相关脚本的代码与此相似):

from multiprocessing.managers import BaseManager
from queue import Queue
import os
import sys

class Server():
    def __init__(self, ip, port, authkey):
    super(Server, self).__init__()
    self.ip = ip
    self.port = port
    self.authkey = authkey

    def make_server_manager(self):
    q_sync = Queue() 
    BaseManager.register('q_sync', callable=lambda: q_sync)
    manager = BaseManager(address=(self.ip, self.port), authkey=self.authkey)
    print('Server started at port ' + str(self.port))
    return manager

if __name__ == "__main__":
    ip = '127.0.0.1'
    port = 12222
    authkey = 'abc'.encode('utf-8')

s = Server(ip, port, authkey)

1 个答案:

答案 0 :(得分:0)

(我自己找到了答案,因此决定稍微修改一下我的问题,并确保突出显示答案中的重要内容。)

要使其正常工作,在AWS上的安全组和脚本中正确设置IP地址很重要。

我在这里给出的答案假设服务器在AWS上运行,并且其他脚本可以在本地或AWS上运行。

您需要进行以下设置:
在您的AWS安全组中,创建具有以下规范的自定义TCP规则:
1. IP地址:您本地计算机的IP地址
2.端口范围:运行服务器的端口(范围/数字),在这种情况下为11111

您的脚本必须包含以下IP地址:
 -服务器(在AWS上运行):实例在AWS上的私有IP
 -进程未在AWS上运行(Reader / Writer /无论您选择在本地计算机上运行什么):服务器在其上运行的实例的公共IPv4地址

脚本中的端口号和身份验证代码显然必须全部匹配。

希望很清楚。享受大家。