消息包rpc的rpc框架。

pymprpc的Python项目详细描述


一个 PymPrc公司 ====

说明

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

待办事项

  • 负载平衡代理

限制

  • 同步客户端不支持心跳和超时

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java将spring j_spring_安全检查迁移到登录   log4j2中自定义appender中AppConfig的java问题   在将java转换为Json时是否可以忽略内部类名和变量   用java将PDF文件转换为十六进制格式   java将值从AsyncTask返回到主类   java如何导入带有部署变量类名的静态函数?   java Spring Boot@ConfigurationProperties未从环境检索属性   java为什么API调用需要80毫秒的延迟才能到达控制器(在Google应用程序引擎中)?   XML配置中MarshallingMessageConverter中的java设置MarshallTo获取无效属性“MarshallTo”   java从群中获取facebook帖子   @ComponentScan的java excludeFilters不起作用   java将单选按钮值从一个类传递到另一个类   java使JTextArea在Swing中可滚动   java Android增强现实应用程序:将球坐标旋转到设备坐标系