消息包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 Cassandra复制因子大于节点数   java J2EE JTA事务回滚不适用于OSE Glassfish 4.0(Build 89)   java spring安全预认证用户登录   org的java类文件。反应流。从RxJava编译示例时未找到Publisher?   java在使用dataFormat作为POJO通过Camel调用Web服务时无法设置SOAP标头   Javafx类的java静态实例   java如何防止一个部件在关闭时覆盖另一个部件的位置   sql server无法从我的java代码连接到数据库   java在JList(Swing)中显示带有的ArrayList   从Java中的CXF服务获取WSAddressing数据   使用资产文件夹进行java简单json解析(本地)   java LDAPException未绑定的无效凭据   JavaJSFspring部署到weblogic   JAVA中字符数组中的特定元素排列?   如果脚本位于不同的目录中,则ant不会使用exec标记运行Javashell脚本