python - 在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
。为了让一切正常工作,需要为 function 创建第二个参数algorithm_dijkstra
,即将图形本身转移到这个函数,而不是像我之前尝试做的那样从某个地方获取图形。然后一切正常并按预期工作。
推荐阅读
- amazon-web-services - 在 elasticbeanstalk 上部署私有 github repo golang 应用
- c# - 由于明显的“MutliThreading”错误或构建/调试问题,程序在“ShowDialog”上不断崩溃
- angular - Angular5如何从子组件获取变量引用
- json - 将大型 JSON 文件数据加载到 Angular cli 表中
- rest - OneDrive API:未经身份验证,必须经过身份验证才能使用“/drive”语法
- redirect - 在 Netlify 中重写 .html 文件
- android - 显示阅读android的仪表
- java - Java 装饰图案披萨浇头
- android - 如何在android中的天,小时(24),分钟(60),秒(60)中获取两个日期之间的差异
- xslt - 哪个更快 xsl:function 或 xsl:call-template