jsonrpc使用

1.什么是rpc

RPC(Remote Procedure Call)远程过程调用,简单说就是通过网络请求服务,不需要了解底层网络技术的协议。

常用语分布式应用程序。

2.rpc数据传递格式

rpc支持多种数据格式传递,json,xml等

3.tornado中使用jsonrpc示例

安装服务端包,客户端包

pip install tornado jsonrpcserver

pip install tornado jsonrpcclient

服务端程序如下:

from tornado import ioloop, web

from jsonrpcserver.aio import methods

from jsonrpcserver.response import NotificationResponse

@methods.add

async def ping():

return "pong"

class RpcTestHandler(web.RequestHandler):

async def post(self):

request = self.request.body.decode()

response = await methods.dispatch(request)

if not response.is_notification:

self.write(response)

运行,开始监听

客户端程序如下:

# 同步请求

import jsonrpcclient

jsonrpcclient.request('http://localhost:20000/test_rpc', 'ping')

运行结果如下:

E:\gitcode\tornado-test>python test.py

--> {"jsonrpc": "2.0", "method": "ping", "id": 1}

# 异步请求

from tornado import ioloop

from jsonrpcclient.tornado_client import TornadoClient

client = TornadoClient('http://localhost:20000/test_rpc')

async def main():

result = await client.request('ping')

print(result)

ioloop.IOLoop.current().run_sync(main)

运行结果如下:

E:\gitcode\tornado-test>python test.py

INFO:jsonrpcclient.client.request:{"jsonrpc": "2.0", "method": "ping", "id": 1}

INFO:jsonrpcclient.client.response:{"jsonrpc": "2.0", "result": "pong", "id": 1}

pong

4.http请求,rpc请求区别

http协议是支持长连接的,因此和rpc的自定义tcp报文协议相比,连接上没有太大区别,

区别在于自定义tcp报文做了优化处理,去除了很多无用信息,这是因为rpc是面向服务的。

python jsonrpc_jsonrpc使用相关推荐

  1. Github配置(git+vscode+python+jupyter)

    ①下载git 打开 git bash 工具的用户名和密码存储 $ git config --global user.name "Your Name" $ git config -- ...

  2. 【实验楼】python简明教程

    ①终端输入python进入 欣赏完自己的杰作后,按 Ctrl + D 输入一个 EOF 字符来退出解释器,你也可以键入 exit() 来退出解释器. ②vim键盘快捷功能分布 ③这里需要注意如果程序中 ...

  3. 【Kaggle Learn】Python 5-8

    五. Booleans and Conditionals Using booleans for branching logic x = True print(x) print(type(x))''' ...

  4. 【Kaggle Learn】Python 1-4

    [Kaggle Learn]Python https://www.kaggle.com/learn/python 一. Hello, Python A quick introduction to Py ...

  5. 使用python愉快地做高数线代题目~

    今天接触到了python,发现真是极易上手啊!对比c语言是什么鬼东西= = 诶,等下,看完教学文章发现TA在下面写了这句话 如果做了前面的内容你可能已被吸引了,觉得c语言真的是废材! 不...不是的. ...

  6. python 位运算与等号_Python 运算符

    和大多数语言一样,Python也有很多运算符,并且运算符跟其他语言的运算符大同小异接下来一一介绍: 算术运算符: 运算符描述实例 +加 - 两个对象相加a+b的输出结果是30 -减 - 得到复数或者一 ...

  7. python减小内存占用_如何将Python内存占用缩小20倍?

    当程序执行过程中RAM中有大量对象处于活动状态时,可能会出现内存问题,特别是在对可用内存总量有限制的情况下. 下面概述了一些减小对象大小的方法,这些方法可以显著减少纯Python程序所需的RAM数量. ...

  8. python中排序英文单词怎么写_Python实现对文件进行单词划分并去重排序操作示例...

    本文实例讲述了Python实现对文件进行单词划分并去重排序操作.,具体如下: 文件名:test1.txt 文件内容: But soft what light through yonder window ...

  9. python程序如何执行死刑图片_如何判断对象已死

    已死的对象就是不可能被任何途径使用的对象,有以下几种方法判断一个对象是否已经死了: 引用计数 给对象添加一个引用计数器,每当有一个地方引用他,计算器就加 1:当引用失效时,计数器减 1:任何时刻计数器 ...

  10. Python gRPC 安装

    1. 安装依赖库 sudo pip3 install grpcio sudo pip3 install protobuf sudo pip3 install grpcio_tools 2. 生成对应文 ...

最新文章

  1. hbase redis mongoddb neo4j 非关系型数据库简介
  2. 首次使用计算机鼠标键盘不能用,解决方案:如何解决无法使用计算机鼠标和键盘的问题?如果启动后无法使用鼠标和键盘该怎么办?...
  3. 一些挺不错的visualstudio主题样式
  4. 数据类别不平衡/长尾分布?不妨利用半监督或自监督学习
  5. java发送http跨域_跨域发送HTTP请求详解
  6. TCP:一个悲伤的故事
  7. ASCII码表 0~127
  8. 1月3日 接触ROS
  9. 北风网VIP6级学习视频地址
  10. 电脑上免费的录屏软件有哪些?分享六款录屏小工具,超好用
  11. 计算机速录专业教学计划,计算机信息与速录技术专业二年制教学计划.doc
  12. 关于linux打包以及解压到指定目录的简单操作demo
  13. 注册表删除方式解决Navicat到期问题
  14. java计算工作日,排除周末以及法定假日
  15. 2021-2027全球与中国Al2O3氧化铝陶瓷基板白板市场现状及未来发展趋势
  16. python中等好用什么表示_Python十大装B语法!你会几种?
  17. arm方案商,三星S5P6818开发板ARM Cortex-A53架构
  18. T-SNE可视化高维数据,亮瞎审稿人
  19. 苹果电脑IOS ssh远程关机
  20. USB3.0高清采集卡/HDMI TO USB3.0/ps4/5/ns/ipad平板游戏直播手游吃鸡录制相机摄像机抖音电商视频带货hdmi采集

热门文章

  1. Android Canvas.DrawLine绘制线段
  2. 关于vs2008 SP1中CMFCToolBar的一些事儿
  3. tr069开源代码文档_tr069开源代码——cwmp移植
  4. 毫米波雷达及其应用精炼介绍
  5. UE4学习-初识虚幻引擎(下载、安装、重定向问题、安装引擎、启动)
  6. 让 Chrome 57 支持迅雷精简版
  7. 酒店产生蜱虫原因及如何处理
  8. 苹果电脑怎么安装计算机一级,苹果系统安装教程,详细教您苹果电脑怎么重装系统...
  9. ENVI下Landsat8辐射定标与大气校正
  10. 【工作笔记001】SuperMap配准TransCAD底图