我知道问题标题很奇怪!。
我有两个虚拟机。第一个资源有限,而第二个资源与普通计算机一样具有足够的资源。第一台机器将从外部设备接收信号。该信号将触发python编译器执行脚本。该脚本很大,并且第一台计算机没有足够的资源来执行它。 我可以将脚本复制到第二台计算机上以在其中运行它,但是我无法使第二台计算机接收外部信号。我想知道是否有办法使第一台计算机上的编译器(一旦收到外部信号)调用第二台计算机上的编译器,那么第二台计算机上的编译器执行脚本?因此,第二个编译器应使用第二个计算机资源。请检查所附图片。 假定在两台计算机之间建立了连接,并且它们可以互相看到,并且第二台计算机具有脚本的副本。我只需要将命令(执行)传递到第二台计算机并使其使用自己的资源的命令。
答案 0 :(得分:2)
您应该研究microservice架构来做到这一点。
您可以通过使用flask
并在每台计算机之间发送服务器请求或使用nameko
之类的方法来实现此目的,这将允许您在计算机之间创建“桥梁”并在它们之间调用函数(似乎是您更感兴趣的内容。 nameko
的示例:
机器2 (资源密集型脚本的执行者):
from nameko.rpc import rpc
class Stuff(object):
@rpc
def example(self):
return "Function running on Machine 2."
您将通过Nameko shell运行上述脚本,如文档中所述。
机器1:
from nameko.standalone.rpc import ClusterRpcProxy
# This is the amqp server that machine 2 would be running.
config = {
'AMQP_URI': AMQP_URI # e.g. "pyamqp://guest:guest@localhost"
}
with ClusterRpcProxy(config) as cluster_rpc:
cluster_rpc.Stuff.example() # Function running on Machine 2.
更多info在这里。
答案 1 :(得分:1)
嗯,解决这个问题的方法很多。
如果您只需要python解决方案,可以签出
如果您想要一个可靠的解决方案(我在家庭计算群集上使用的解决方案,但由于imo而使您无法解决问题),可以使用
一个半快速,hacky解决方案。您可以编写微服务。本质上,您的“弱”计算机将收到该消息,然后向您的“强”计算机发送一个http请求。强大的计算机将包含实际程序,计算结果,然后将结果传递回“弱”计算机。
所有这些解决方案都需要某种类型的联网。至少,这些计算机必须位于同一LAN上,或者两者都可以通过Web进行访问。
还有许多其他方法未提及。例如,您可以导出NFS(netowrk文件存储),并让一台计算机将文件放在共享文件夹中,而另一台计算机对该文件执行工作。我确信还有很多其他人为方法来完成此任务:)。如果您愿意,我很乐于扩展特定的方法。