2017-08-05 25 views
1

我有一个封闭的,安全的网络。我想将我的代码传递给执行器并在其中执行它。我希望能够看到它的控制台输出(进度/信息),同时它会这样做。如何远程执行客户端功能?

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

+0

您需要阅读David Beazley的[原创发生器教程](http://dabeaz.com/generators/)(选择演示幻灯片)。请特别注意第7部分。对于输出,请注意第5部分中他讨论的“拖尾文件”。 –

回答

0

您没有指定足够的细节来给出详细的答案。例如,你的系统的规模是多少,那里应该有多少'执行者',如果它应该自动扩展等等。

但是,对于您提出的问题,Pyro4应该能够为您做到这一点。它允许您在远程机器上调用成员函数,就好像它是本地一样。它确实要求您在执行程序节点上运行一个小型服务器进程。

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

编辑:即将发布的Pyro 4.62版本引入了对'cloudpickle'串行器的支持。 Pyro4已经支持'莳萝'串行器很长一段时间了。这两个都可以让你真正将函数本身发送到服务器。这意味着一旦你有一个(非常小的)运行的服务器接受一个可调用的对象,你就可以发送任何你想要的东西来远程执行。