【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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)相关推荐

  1. python rpc_python与RPC服务

    RPC 1.什么是RPC RPC 就是为解决服务之间信息交互而发明和存在的. RPC(Remote Procedure Call)--远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要 ...

  2. 全栈Python 编程必备

    据说: 2019年, 浙江信息技术高考可以考python了: 2018年, Python 进入了小学生的教材: 2018年, 全国计算机等级考试,可以考python 了: 据外媒报道,微软正考虑添加 ...

  3. 大数据技术----HBase Python编程

    Thrift 服务 Hbase分布式数据库,使用Java语言编写,除了提供原生的Java接口外,还可以使用其他语言连接,但是需要使用Thrift服务,进行跨语言转换!!! Thrift是一种C/S模式 ...

  4. 马斯克如何颠覆航天? 1/5385成本,c++和python编程!

    马斯克如何颠覆航天? 1/5385成本,c++和python编程! 5月31日,经历了重重困难,马斯克的SpaceX载人飞船成功发射,这是美国自2011年以来首次发射载人航天飞船,也是美国进入由商业主 ...

  5. CSS、JavaScript、PHP和Python编程合二为一

    CSS, JavaScript,PHP And Python Programming All in One Course 在一门课程中学习Javascript.PHP和Python编程语言的CSS 你 ...

  6. python编程代码示例_python编程线性回归代码示例

    用python进行线性回归分析非常方便,有现成的库可以使用比如:numpy.linalog.lstsq例子.scipy.stats.linregress例子.pandas.ols例子等. 不过本文使用 ...

  7. 《树莓派Python编程指南》——2.2 一个Python游戏:猫和老鼠

    本节书摘来自华章计算机<树莓派Python编程指南>一书中的第2章,第2.2节,作者:(美) Alex Bradbury Ben Everard更多章节内容可以访问云栖社区"华章 ...

  8. 《树莓派Python编程指南》—— 1.3 树莓派快速指南

    本节书摘来自华章计算机<树莓派Python编程指南>一书中的第1章,第1.3节,作者:(美) Alex Bradbury Ben Everard更多章节内容可以访问云栖社区"华章 ...

  9. Python编程规范及性能优化

    为什么80%的码农都做不了架构师?>>>    Ptyhon编程规范 编码 所有的 Python 脚本文件都应在文件头标上 # -*- coding:utf-8 -*- .设置编辑器 ...

  10. 学习Python编程开发可以从事的岗位有哪些?

    Python编程技术在人工智能领域的发展有目共睹,很多人都想学习Python技术,而且从事Python开发,所从事的工作机会和工作岗位及工作内容可选择的余地很多,未来发展空间也很大.下面我们就来详细的 ...

最新文章

  1. 对quake3源代码的学习与研究初步的计划
  2. Conan and Agasa play a Card Game codeforce
  3. 《数据结构》知识点Day_01
  4. 基于SCVMM对虚拟化服务器与虚拟机管理权限分配用户角色
  5. 无障碍开发(四)之ARIA aria-***状态值
  6. 【STM32】I2C相关函数和类型
  7. uoj#351. 新年的叶子(概率期望)
  8. 感谢前任程序员赏饭吃!
  9. 深度解析大型分布式电商网站演变过程以及构架部署解决方案
  10. python合并两个文本文件内容_利用python自带插件合并多个excle文件内容
  11. shared_ptr,weak_ptr使用最广范的智能指针
  12. c语言随机数表,C语言随机数
  13. linux java 自启动_Linux设置开机启动脚本
  14. centos安装nginx 编译时报错_树莓派centos-arm安装k8s编译
  15. memset()和memcpy()函数
  16. AXJ爱新机 亚马逊测评 替代软件-VMLogin反指纹超级浏览器
  17. Flash遮罩之溜光字制作二
  18. mac苹果安装百度网盘--日常工作记录
  19. 交互设计理论之格式塔理论与四大法则
  20. http状态码401

热门文章

  1. Windows server 2008 R2搭建主域控制器 + 辅域控制器
  2. 动态链接库的隐式动态链接和显示动态链接
  3. 第六篇:汇编基础指令讲解
  4. Java第十周的作业
  5. 关于 静态页面布局 中的一些BUG
  6. 聊天软件项目TCP升级版
  7. Linux SSH免密码登录
  8. 浏览器兼容:改写window.showModalDialog
  9. LOAD-OF-PROGRAM
  10. 防止 重复重建相同的表