首页 / JSON / tornado+jsonrpc
tornado+jsonrpc
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了tornado+jsonrpc,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1744字,纯文字阅读大概需要3分钟。
内容图文
rpc:远程过程调用(A服务调用B服务的一个方法或函数)
tornado中jsonrpc的使用
import tornado.httpserver import tornado.ioloop import tornado.web from jsonrpcserver.aio import methods #第一个方法@methods.add async def ping(context, **kwargs): return kwargs #第二个方法@methods.add async def ping_one(context, **kwargs): print(‘ping one‘) return kwargs class RpcHandler(tornado.web.RequestHandler): def get(self): response = methods.dispatch({"jsonrpc": "2.0", "method": "ping", "id": 33, ‘params‘: {‘where‘: 23}}, context={‘name‘: ‘张三‘}) ifnot response.is_notification: self.write(response) #通过此接口调用不同的方法 async def post(self): rpc_request = self.request.body.decode() response = await methods.dispatch(rpc_request, context={‘key‘: ‘one‘}) ifnot response.is_notification: self.write(response) def make_app(): settings = {‘debug‘: True} return tornado.web.Application([ (r‘/‘, RpcHandler), ], **settings) if__name__ == ‘__main__‘: app = make_app() http_server = tornado.httpserver.HTTPServer(app) ip = ‘127.0.0.1‘ port = 8000 http_server.bind(8000, ip) http_server.start(1) print(‘server start! http://{}:{}‘.format(ip, port)) tornado.ioloop.IOLoop.current().start()
客户端调用代码如下:
import time from jsonrpcclient import HTTPClient req = HTTPClient(‘http://127.0.0.1:8000/‘) # 请求ping方法 res = req.request(‘ping‘, name=34) print(res) time.sleep(1) # 请求ping_one方法 res = req.request(‘ping_one‘, name=35) print(res) time.sleep(1)
服务端响应如下:
客户端响应如下:
json-rpc是一种非常轻量级的跨语言远程调用协议,实现及使用简单。方便语言扩展客户端的实现。
使用场景:
调用另一个服务的某个方法,相对于接口调用,在代码整洁及解耦方面有优势。
并且如果是 频繁请求另一个服务的某种功能,使用rpc比http较为轻量级,并且结合socket使用,达到一个连接中多个请求,减少系统开销
相关网址:https://www.zybuluo.com/phper/note/76641
https://blog.csdn.net/red_heel/article/details/78911252
原文:https://www.cnblogs.com/rgcLOVEyaya/p/RGC_LOVE_YAYA_692days_820.html
内容总结
以上是互联网集市为您收集整理的tornado+jsonrpc全部内容,希望文章能够帮你解决tornado+jsonrpc所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。