av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術文章
文章詳情頁

Python遠程方法調用實現過程解析

瀏覽:82日期:2022-07-16 09:16:58

RPCHandler 和 RPCProxy 的基本思路是很比較簡單的。 如果一個客戶端想要調用一個遠程函數,比如 foo(1, 2, z=3) ,代理類創建一個包含了函數名和參數的元組 (‘foo’, (1, 2), {‘z’: 3}) 。 這個元組被pickle序列化后通過網絡連接發生出去。 這一步在 RPCProxy 的 getattr() 方法返回的 do_rpc() 閉包中完成。

服務器接收后通過pickle反序列化消息,查找函數名看看是否已經注冊過,然后執行相應的函數。 執行結果(或異常)被pickle序列化后返回發送給客戶端。實例需要依賴 multiprocessing 進行通信。 不過,這種方式可以適用于其他任何消息系統。例如,如果你想在ZeroMQ之上實習RPC, 僅僅只需要將連接對象換成合適的ZeroMQ的socket對象即可。

先實現server端

import jsonfrom multiprocessing.connection import Listenerfrom threading import Threadclass RPCHandler: def __init__(self): self._functions = {} def register_function(self, func): self._functions[func.__name__] = func def handle_connection(self, connection): try: while True:func_name, args, kwargs = json.loads(connection.recv())# Run the RPC and send a responsetry: r = self._functions[func_name](*args, **kwargs) connection.send(json.dumps(r))except Exception as e: connection.send(json.dumps(e)) except EOFError: passdef rpc_server(handler, address, authkey): sock = Listener(address, authkey=authkey) while True: client = sock.accept() t = Thread(target=handler.handle_connection, args=(client,)) t.daemon = True t.start()# Some remote functionsdef add(x,y): return x+yif __name__ == ’__main__’: handler = RPCHandler() handler.register_function(add) # Run the server rpc_server(handler, (’127.0.0.1’, 17000), authkey=b’peekaboo’)

再實現client端

import jsonfrom multiprocessing.connection import Clientclass RPCProxy: def __init__(self, connection): self._connection = connection def __getattr__(self, name): def do_rpc(*args, **kwargs): self._connection.send(json.dumps((name, args, kwargs))) result = json.loads(self._connection.recv()) if isinstance(result, Exception):raise result return result return do_rpcif __name__ == ’__main__’: c = Client((’127.0.0.1’, 17000), authkey=b’peekaboo’) proxy = RPCProxy(c) res = proxy.add(2, 3) print(res)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 亚洲国产三级 | 久久精品国产一区 | 中文字幕亚洲一区 | 日韩精品网 | 日韩免费在线视频 | 特级黄色片| 91福利在线视频 | av在线天堂网 | 欧美日韩国产在线播放 | 免费一级黄色片 | 国产精品一区二区三区不卡 | 91国内在线| 久久99热这里只频精品6学生 | 精品黄色片| 国产午夜精品福利 | 91久久久久久久久 | 性巴克成人免费网站 | 日本三级香港三级 | 一区二区福利视频 | 亚洲精品日韩精品 | 日本免费黄色网址 | 国产天堂av | 自拍偷拍欧美日韩 | 久久精彩 | 日本中文在线观看 | 老司机精品福利视频 | 黄色片免费观看 | 一区二区欧美日韩 | 国产永久在线 | 亚洲欧美一区二区三区四区 | 精品一区二区在线播放 | 亚洲精品乱码久久久久久蜜桃91 | 99爱视频 | 亚洲视频一区 | 欧美视频一区二区三区 | 黄色草逼视频 | 天天躁日日躁狠狠躁av麻豆男男 | 亚洲欧美精品在线 | 在线观看亚洲一区 | 欧美色影院 | 一级片在线播放 |