消息包rpc的rpc框架。
pymprpc的Python项目详细描述
一个 PymPrc公司 ====
- 版本:0.0.3
- 状态:dev
- 作者:hsz
- 电子邮件:hsz1273327@gmail.com
说明
a rpc framework for message-pack rpc.
关键词:rpc、服务器、tcp
功能
- api似乎是stdlib xmlrpc
- 易于使用,易于调试
- 支持流响应
示例
服务器
importplatformfrompymprpc.serverimportSimpleMprpcServerifplatform.system()=="Windows":try:importaio_windows_patchasasyncioexcept:importwarningswarnings.warn("you should install aio_windows_patch to support windows",RuntimeWarning,stacklevel=3)importasyncioelse:importasynciotry:importuvloopasyncio.set_event_loop_policy(uvloop.EventLoopPolicy())exceptImportError:passclassMyMPRPCServer(SimpleMprpcServer):passwithMyMPRPCServer(("127.0.0.1",5000),debug=True)asserver:server.register_introspection_functions()@server.register_function()deftestfunc(a,b):'''有help'''returna+b@server.register_function()asyncdeftestcoro(a,b):awaitasyncio.sleep(0.1)returna+b@server.register_function()asyncdeftestcorogen(a,b):foriinrange(10):awaitasyncio.sleep(0.1)yieldi+a+bclassTestClass:deftestclassmethod(self,a,b):returna+basyncdeftestclasscoro(self,a,b):awaitasyncio.sleep(0.1)returna+basyncdeftestclasscorogen(self,a,b):foriinrange(10):awaitasyncio.sleep(0.1)yieldi+a+bt=TestClass()server.register_instance(t)server.run_forever()
同步客户端
importtimefrompymprpc.clientimportRPCwithRPC(addr="tcp://admin:admin@127.0.0.1:5000",debug=True)asrpc:print(rpc.system.listMethods())print(rpc.system.methodSignature("testclassmethod"))print(rpc.system.methodHelp("testfunc"))print(rpc.system.lenConnections())print(rpc.system.lenUndoneTasks())print(rpc.testclassmethod(1,2))print(rpc.testclasscoro(2,3))print(rpc.testcoro(5,6))print(rpc.testfunc(5,4))agen=rpc.testcorogen(1,2)foriinagen:print(i)time.sleep(200)print("wait done")# rpc.close()print(rpc.testfunc())
异步客户端
importasynciofrompymprpc.clientimportAsyncRPCasyncdefmain(loop):asyncwithAsyncRPC(addr="tcp://admin:admin@127.0.0.1:5000",loop=loop,debug=True)asrpc:print(awaitrpc.system.listMethods())print(awaitrpc.system.methodSignature("testclassmethod"))print(awaitrpc.system.methodHelp("testfunc"))print(awaitrpc.system.lenConnections())print(awaitrpc.system.lenUndoneTasks())print(awaitrpc.testclassmethod(1,2))print(awaitrpc.testclasscoro(2,3))print(awaitrpc.testcoro(5,6))print(awaitrpc.testfunc(5,4))# await asyncio.sleep(200)print("wait done")print(awaitrpc.testfunc())print("end")loop=asyncio.get_event_loop()try:loop.run_until_complete(main(loop))exceptExceptionase:raisee
安装
- python -m pip install pymprpc
待办事项
- 负载平衡代理
限制
- 同步客户端不支持心跳和超时