python编程(再述rpc)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
rpc作为pc之间通信的工具,极大地提高了我们运行的速率和方法。一般来说,如果rpc和fabric、supervisor配合使用的话,会给我们的工作带来极大地方便。此外,很多同学喜欢用多进程代替多线程,我想这其中除了多进程可以防止服务终止之外,另外一个原因就是多进程可以有效地扩展为分布式系统。这一点对于那些业务量比较大的公司来说,还是很有吸引力的。
之前,我们也写过rpc的代码。但是,原来rpc的操作都是基于twisted库,很多同学未必了解这个库。其实python本身也提供了rpc的基本操作。英文好一点的同学可以看这份在线文档,上面说的很清楚。当然希望快速上手的同学,可以看看下面的代码。它的server是这么写的,
from SimpleXMLRPCServer import SimpleXMLRPCServer
from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler# Restrict to a particular path.
class RequestHandler(SimpleXMLRPCRequestHandler):rpc_paths = ('/RPC2',)# Create server
server = SimpleXMLRPCServer(("localhost", 8000),requestHandler=RequestHandler)
server.register_introspection_functions()# Register pow() function; this will use the value of
# pow.__name__ as the name, which is just 'pow'.
server.register_function(pow)# Register a function under a different name
def adder_function(x,y):return x + y
server.register_function(adder_function, 'add')# Register an instance; all the methods of the instance are
# published as XML-RPC methods (in this case, just 'div').
class MyFuncs:def div(self, x, y):return x // yserver.register_instance(MyFuncs())# Run the server's main loop
server.serve_forever()
server代码中主要就是注册了pow、adder_function、MyFuncs这三部分的内容,其他的就没有啥了。
import xmlrpclibs = xmlrpclib.ServerProxy('http://localhost:8000')
print s.pow(2,3) # Returns 2**3 = 8
print s.add(2,3) # Returns 5
print s.div(5,2) # Returns 5//2 = 2# Print list of available methods
print s.system.listMethods()
client部分的内容就更简单了,主要就是使用server提供的几个函数。其实大家可以反过来看。如果我们想自己写一个分布式系统,那么完全可以采用多server+client的形式来完成。按照这种模式,如果client希望server执行某种工作,可以先upload代码到server处,请server重新reload,接着就按照需求请求server来处理了。当然,如果在本地测试这个多server+client的分布式代码,只需要将分布式的ip注册成为不同的端口就可以了,道理其实是一样的。
python编程(再述rpc)相关推荐
- python rpc_python与RPC服务
RPC 1.什么是RPC RPC 就是为解决服务之间信息交互而发明和存在的. RPC(Remote Procedure Call)--远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要 ...
- 全栈Python 编程必备
据说: 2019年, 浙江信息技术高考可以考python了: 2018年, Python 进入了小学生的教材: 2018年, 全国计算机等级考试,可以考python 了: 据外媒报道,微软正考虑添加 ...
- 大数据技术----HBase Python编程
Thrift 服务 Hbase分布式数据库,使用Java语言编写,除了提供原生的Java接口外,还可以使用其他语言连接,但是需要使用Thrift服务,进行跨语言转换!!! Thrift是一种C/S模式 ...
- 马斯克如何颠覆航天? 1/5385成本,c++和python编程!
马斯克如何颠覆航天? 1/5385成本,c++和python编程! 5月31日,经历了重重困难,马斯克的SpaceX载人飞船成功发射,这是美国自2011年以来首次发射载人航天飞船,也是美国进入由商业主 ...
- CSS、JavaScript、PHP和Python编程合二为一
CSS, JavaScript,PHP And Python Programming All in One Course 在一门课程中学习Javascript.PHP和Python编程语言的CSS 你 ...
- python编程代码示例_python编程线性回归代码示例
用python进行线性回归分析非常方便,有现成的库可以使用比如:numpy.linalog.lstsq例子.scipy.stats.linregress例子.pandas.ols例子等. 不过本文使用 ...
- 《树莓派Python编程指南》——2.2 一个Python游戏:猫和老鼠
本节书摘来自华章计算机<树莓派Python编程指南>一书中的第2章,第2.2节,作者:(美) Alex Bradbury Ben Everard更多章节内容可以访问云栖社区"华章 ...
- 《树莓派Python编程指南》—— 1.3 树莓派快速指南
本节书摘来自华章计算机<树莓派Python编程指南>一书中的第1章,第1.3节,作者:(美) Alex Bradbury Ben Everard更多章节内容可以访问云栖社区"华章 ...
- Python编程规范及性能优化
为什么80%的码农都做不了架构师?>>> Ptyhon编程规范 编码 所有的 Python 脚本文件都应在文件头标上 # -*- coding:utf-8 -*- .设置编辑器 ...
- 学习Python编程开发可以从事的岗位有哪些?
Python编程技术在人工智能领域的发展有目共睹,很多人都想学习Python技术,而且从事Python开发,所从事的工作机会和工作岗位及工作内容可选择的余地很多,未来发展空间也很大.下面我们就来详细的 ...
最新文章
- 对quake3源代码的学习与研究初步的计划
- Conan and Agasa play a Card Game codeforce
- 《数据结构》知识点Day_01
- 基于SCVMM对虚拟化服务器与虚拟机管理权限分配用户角色
- 无障碍开发(四)之ARIA aria-***状态值
- 【STM32】I2C相关函数和类型
- uoj#351. 新年的叶子(概率期望)
- 感谢前任程序员赏饭吃!
- 深度解析大型分布式电商网站演变过程以及构架部署解决方案
- python合并两个文本文件内容_利用python自带插件合并多个excle文件内容
- shared_ptr,weak_ptr使用最广范的智能指针
- c语言随机数表,C语言随机数
- linux java 自启动_Linux设置开机启动脚本
- centos安装nginx 编译时报错_树莓派centos-arm安装k8s编译
- memset()和memcpy()函数
- AXJ爱新机 亚马逊测评 替代软件-VMLogin反指纹超级浏览器
- Flash遮罩之溜光字制作二
- mac苹果安装百度网盘--日常工作记录
- 交互设计理论之格式塔理论与四大法则
- http状态码401