RPC(一):基于python实现简单的RPC框架(上)

September 7, 2016 at 10:36 pm

似乎又要放着以前无数个坑不填来挖一个新的坑了,不过这次并不打算挖很深的坑。其实挺早就有对现有的RPC框架有一个简单的理解的想法,所以本文的初步想法是模仿tinyRPC来简单模拟一下RPC框架,这也是本篇的主要内容。如果后面有续篇的话,会花些时间看看像gRPC这样的库的实现机制,不过目前暂时也没有这方面的打算,所以目前而言本系列应该仅此一篇。如果一切顺利的话,之前的坑会在回到学校之后慢慢开始填。废话不多说了,先进入正题吧。 本文主要包含以下内容: 1. 客户端的类本地化调用 2. 序列化协议的设计 3. 通信协议的设计 客户端的类本地化调用 RPC框架中最基本的两个要素是客户端和服务器端,客户端是远程过程的调用者,而服务器端则是过程的实现者,所谓的RPC(Remote Procedure call),就是希望客户端可以像调用本地函数一样调用服务器端的函数。为了做成一个框架,我们需要让客户端可以实现任意函数的调用,由于本文使用python实现,这里利用python的__getattr__(self, name)函数来较为简单、干净地实现这个功能(在python中,如果访问一个类的属性,包括方法不存在时,会调用这个类的__getattr__()来试图返回这个属性或者这个方法的值,对于方法而言,此时可以返回一个函数,这个新的函数将会被调用。这个函数名字有一定的困扰,但在这里使用它可以极大简化代码)。 通过这个函数,我们可以将所有的远程过程调用统一到client的call方法里去: class RPCClient(object): def __getattr__(self, name): func […]

Python读写配置文件-ConfigParser模块--摘自Python学习总结-Python基础二

October 20, 2013 at 12:29 pm

本文主要介绍了Python2中的ConfigParser模块,该模块用于读写Python风格的配置文件。 1          ConfigParser模块 使用配置文件而不是写死代码方便了最终用户定制程序。Python提供了ConfigParser模块用以编写、解析Python风格(类似Windows的INI文件风格)的配置文件。 1.1     编写配置文件 一个简单的Python风格的配置文件如下所示: [DEFAULT] ServerAliveInterval = 45 Compression = yes CompressionLevel = 9 ForwardX11 = yes […]