Python编译器调用另一个python编译器来执行脚本(将脚本从一台独立的计算机执行到另一台计算机)

时间:2019-10-27 23:46:38

标签: python

我知道问题标题很奇怪!。

我有两个虚拟机。第一个资源有限,而第二个资源与普通计算机一样具有足够的资源。第一台机器将从外部设备接收信号。该信号将触发python编译器执行脚本。该脚本很大,并且第一台计算机没有足够的资源来执行它。 我可以将脚本复制到第二台计算机上以在其中运行它,但是我无法使第二台计算机接收外部信号。我想知道是否有办法使第一台计算机上的编译器(一旦收到外部信号)调用第二台计算机上的编译器,那么第二台计算机上的编译器执行脚本?因此,第二个编译器应使用第二个计算机资源。请检查所附图片。 假定在两台计算机之间建立了连接,并且它们可以互相看到,并且第二台计算机具有脚本的副本。我只需要将命令(执行)传递到第二台计算机并使其使用自己的资源的命令。 enter image description here

2 个答案:

答案 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请求。强大的计算机将包含实际程序,计算结果,然后将结果传递回“弱”计算机。

  • Flask是一个简单而轻便的解决方案。

所有这些解决方案都需要某种类型的联网。至少,这些计算机必须位于同一LAN上,或者两者都可以通过Web进行访问。

还有许多其他方法未提及。例如,您可以导出NFS(netowrk文件存储),并让一台计算机将文件放在共享文件夹中,而另一台计算机对该文件执行工作。我确信还有很多其他人为方法来完成此任务:)。如果您愿意,我很乐于扩展特定的方法。