由於以前自學php,因此知道能夠經過http協議,web server訪問服務器,以前也是將算法放到服務器的flask上供遠程訪問接口使用,最近了解到有個RPC的東西,使用Python模塊zerorpc搭建RPC更簡單快捷。服務端和客戶端都要安裝zerorpc,將服務端的ip和端口號寫入server.py文件中運行(不能中止),客戶端client.py中填寫服務端的ip和端口號便可運行訪問。代碼以下:php
Server.pyweb
import zerorpc class doubleRPC(object): def double2(self, num): return num*2 serv = zerorpc.Server(doubleRPC()) serv.bind("tcp://0.0.0.0:4243") serv.run()
Client.py 本機實驗室127.0.0.1 遠程則換成服務器的ip算法
import zerorpc c = zerorpc.Client() c.connect("tcp://127.0.0.1:4243") print c.double2("RPC")
流式相應(Streaming Responses) 這個代碼非原創flask
Server.py服務器
import zerorpc class StreamingRPC(object): @zerorpc.stream def streaming_range(self, fr, to, step): return xrange(fr, to, step) s = zerorpc.Server(StreamingRPC()) s.bind("tcp://0.0.0.0:4242") s.run()
Client.pytcp
import zerorpc c = zerorpc.Client() c.connect("tcp://127.0.0.1:4242") for item in c.streaming_range(10, 20, 2): print item
第一類異常(First-class exception) 這個代碼非原創code
Server.pyserver
import zerorpc class ExceptionalRPC(object): def bad(self): raise Exception(":P") s = zerorpc.Server(ExceptionalRPC()) s.bind("tcp://0.0.0.0:4242") s.run()
Client.py接口
import zerorpc c = zerorpc.Client() c.connect("tcp://127.0.0.1:4242") try: c.bad() except Exception, e: print "An error occurred: %s" % e