将单一功能委托给python中的客户端服务器

问题描述 投票:1回答:1

我有一个使用xml-rpc协议的简单客户端服务器程序。我的代码如下所示。但是,这不符合我的预期。也许有人知道为什么?

在我的模块directed_graph中,有要在服务器上执行的功能algorithm_dijkstra(vertex_name)

客户:

from xmlrpc.client import ServerProxy
...
if __name__ == '__main__':
    proxy = ServerProxy('http://127.0.0.1:8080')
    # filling the graph with data
    ...
    test = proxy.algorithm_dijkstra(vertex) # I expect the correct data (dictionary) in test after the function is executed on the server
    ...

服务器:

from xmlrpc.server import SimpleXMLRPCServer
from directed_graph import algorithm_dijkstra


def main():
    server = SimpleXMLRPCServer(("127.0.0.1", 8080))
    print('Server is listening on port 8080...')
    server.register_function(algorithm_dijkstra)
    server.serve_forever()


if __name__ == '__main__':
    main()

小澄清:在我的模块“ directed_graph”中,基本上是客户端使用的功能,但是我想在服务器上执行其中的一项功能。我发现,如果所有功能都在服务器上执行,则程序可以正常工作。但是,我如何仅将1个函数委派给服务器而不是全部?

python xml-rpc
1个回答
1
投票

我解决了以下问题。在客户端上,我设置并存储了图形数据,在服务器上,我仅执行一项功能algorithm_dijkstra。为了使一切正常工作,需要为函数algorithm_dijkstra创建第二个参数,即将图形本身传递到此函数,而不要像我以前尝试的那样从某个地方获取图形。然后一切都会正常且按预期进行。

© www.soinside.com 2019 - 2024. All rights reserved.