如何将python代码发送到另一台要执行的机器?

2024-09-30 22:22:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在AWS上构建一个测试应用程序。我有一个拥有应用程序的“主”机器。有时,我希望能够将处理工作卸载到一些按需从机上。假设一个实例化的从机,只需要最少的软件(不包括我的主应用程序),我如何才能将Python代码的功能单元“发送”给一个或多个从机来执行?在

我知道并承认,由于许多原因,这种体系结构可能不是最佳的——而且我知道,如果我能在启动时在实例上预装相关代码,它会更简单。但是,假设我们有一个硬约束,即从实例不能被预加载到操作系统和一些基本库之外——例如,如果我想在另一台机器上喷射一些生成的代码呢?在

编辑:StackOverflow是一个该死的热门资源!感谢大家的回复。令人惊叹的。给我几天时间,我会回来报到的。在


Tags: 实例代码功能机器aws应用程序编辑软件
3条回答

我已经多次遇到这个问题了。在

选项1-eval()

当我想快速解决某个问题时,我使用^{}或它在stdlib中的一个表亲。将源代码传输到主节点,然后编译和评估:

src = getSourceFromMaster()
obj = compile(src, "master.py", "exec")
exec(obj)

只要从客户机到服务器获取源的传输是可信的,并且源代码需要采取的操作相对简单,这就可以工作。有几次,我需要在主从机之间进行更紧密的集成,需要大量的来回处理或复杂的数据结构。在这些情况下,我使用Pyro。在

方案2-派洛

Pyro是一个完整的跨平台的Python远程方法执行库。我在生产环境中使用它将处理从linux机器发送到windows机器,然后再发送回来,它非常稳定。在

他们的文档中的示例:

大师:

^{pr2}$

从属:

# save this as client.py
import greeting
name=raw_input("What is your name? ")
greeting_maker=greeting.GreetingMaker()
print greeting_maker.get_fortune(name)

输出:

$ python client.py
What is your name? Irmen
Hello, Irmen. Here is your fortune message:
Behold the warranty -- the bold print giveth and the fine print taketh away.

Pyro最棒的地方是“import greeting”行客户端.py--代码来自服务器。

如果您是从裸操作系统安装开始的,那么在启动新实例之后,您可以下推一个python脚本,用SSH托管客户端代码。这样你就有了一个很好的基础设施。在

我不能再详细地介绍这两种方法在AWS中的应用,也无法将它们与AWS基础设施提供的实用程序进行比较。欢迎您的意见或讨论。在

使用SSH将代码scp到slave。使用专用于此目的的EC2密钥对设置从机。把EC2钥匙对放在主机上。这是简单和快速的设置。在

另一个选择是使用AWS Elastic MapReduce和dumbo或{a2}来管理从属服务器。这是更多的工作来设置,但将更强大的失败,为您提供任务跟踪功能,等等

相关问题 更多 >