在 python 中将单一功能委派给客户端服务器

Delegating single function to client server in python

我有一个使用 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 个功能委托给服务器而不是全部?

我解决了如下问题。在客户端上,我为图​​形设置和存储数据,而在服务器上我只执行一个功能 algorithm_dijkstra。为了让一切正常工作,需要为函数 algorithm_dijkstra 设置第二个参数,即将图形本身传输到此函数,而不是像我之前尝试的那样从某个地方获取图形。然后一切都按预期正常工作。