如何远程执行客户端功能?
Posted
技术标签:
【中文标题】如何远程执行客户端功能?【英文标题】:How to execute client functions remotely? 【发布时间】:2017-08-05 23:50:57 【问题描述】:我有一个封闭、安全的网络。我想将我的代码传递给执行程序并在那里执行它。我希望能够在它执行时看到它的控制台输出(进度/信息)。
假设我们有一个在当前客户端代码中不带参数的函数,如何在服务器上执行它并返回输出?是否有适用于此类用例的 Python 框架?
【问题讨论】:
您需要阅读 David Beazley 的 original generators tutorial(选择演示幻灯片)。请特别注意第 7 部分。对于输出,请注意第 5 部分,他讨论了“拖尾文件”。 【参考方案1】:您没有指定足够的详细信息来给出详细的答案。例如,您的系统的规模是多少,应该有多少“执行者”,是否应该自动扩展等等。
但是,对于您所要求的,Pyro4 应该能够为您执行此操作。它允许您像在本地一样调用远程机器上的成员函数。它确实需要您在执行程序节点上运行一个小型服务器进程。
如果您在执行程序中捕获sys.stdout
并将这些行作为生成器结果,您也可以轻松地将输出流式传输到调用应用程序,因为 Pyro4 支持远程生成器。不过,如果您不想在执行程序中出现不必要的延迟,您可能希望缓冲输出。
编辑:即将发布的 Pyro 4.62 版本引入了对“cloudpickle”序列化程序的支持。 Pyro4 长期以来一直支持“dill”序列化程序。这两者都允许您将函数本身实际发送到服务器。这意味着,一旦您运行了一个(非常小的)服务器并接受了一个可调用对象,您就可以向它发送 任何 想要远程执行的东西。
【讨论】:
以上是关于如何远程执行客户端功能?的主要内容,如果未能解决你的问题,请参考以下文章
linux下如何使用ssh远程登录主机 执行shell脚本?
SaltStack-----安装,远程执行,grains,pillar,jinja模板