如何远程执行客户端功能?

时间:2017-08-05 23:50:57

标签: python exec rpc

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

所以说我们有一个函数在我们当前的客户端代码中没有参数,如何在服务器上执行它并获得输出?是否有这种用例的Python框架?

1 个答案:

答案 0 :(得分:0)

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

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

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

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