消息包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关闭应用程序按钮Listener   Java中的多线程同步在Java示例中的思考   java如何查看Tomcat正在使用/访问的JAR?   java My代码在调用垃圾收集器后不会终止   多线程Java连接线程池和connectionfactory?   java在运行时修改JAR文件   java Android:使用光标时引发IllegaleException   在Netbeans中测试不可执行库的java?   泛型在参数上强制子类Java类型   spring Java:继承与依赖注入“自动连线”   javascript如何解析这个xml元素   java打印特定序列中的数组   带有ProcessingTimeSessionWindow的java Apache Flink自定义触发器   java如何配置消息驱动的Bean应用程序和Glassfish来使用来自远程MessageBroker的消息?