【问题标题】:How to execute client functions remotely?如何远程执行客户端功能?
【发布时间】:2017-08-05 23:50:57
【问题描述】:

我有一个封闭、安全的网络。我想将我的代码传递给执行程序并在那里执行它。我希望能够在它执行时看到它的控制台输出(进度/信息)。

假设我们有一个在当前客户端代码中不带参数的函数,如何在服务器上执行它并返回输出?是否有适用于此类用例的 Python 框架?

【问题讨论】:

  • 您需要阅读 David Beazley 的 original generators tutorial(选择演示幻灯片)。请特别注意第 7 部分。对于输出,请注意第 5 部分,他讨论了“拖尾文件”。

标签: python exec rpc


【解决方案1】:

您没有指定足够的详细信息来给出详细的答案。例如,您的系统的规模是多少,应该有多少“执行者”,是否应该自动扩展等等。

但是,对于您所要求的,Pyro4 应该能够为您执行此操作。它允许您像在本地一样调用远程机器上的成员函数。它确实需要您在执行程序节点上运行一个小型服务器进程。

如果您在执行程序中捕获sys.stdout 并将这些行作为生成器结果,您也可以轻松地将输出流式传输到调用应用程序,因为 Pyro4 支持远程生成器。不过,如果您不想在执行程序中出现不必要的延迟,您可能希望缓冲输出。

编辑:即将发布的 Pyro 4.62 版本引入了对“cloudpickle”序列化程序的支持。 Pyro4 长期以来一直支持“dill”序列化程序。这两者都允许您将函数本身实际发送到服务器。这意味着,一旦您运行了一个(非常小的)服务器并接受了一个可调用对象,您就可以向它发送 任何 想要远程执行的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    • 2018-05-25
    • 2012-12-06
    • 2018-08-31
    • 2014-03-15
    • 1970-01-01
    相关资源
    最近更新 更多