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}

<-- {"jsonrpc": "2.0", "result": "pong", "id": 1} (200 OK)

# 异步请求

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是面向服务的。

jsonrpc使用的更多相关文章

  1. NodeJS POST Request Over JSON-RPC

    1.npm install art-template2.npm  install request3.在app.js中加入以下代码转html: var template = require('art-t ...

  2. 使用Jayrock开源组件开发基于JSON-RPC协议的接口

    最近接手一个以前的项目,无意间发现此项目开发接口的组件:Jayrock(接口组件估计用的少,用的最多的估计是这个Jayrock.json.dll,用于解析json) 以下是Jayrock的介绍官网: ...

  3. Lua JSONRPC学习笔记

    JSON RPC JSON RPC 为利用json数据格式来执行远程调用方式, 作用同xmlrpc,不过与xmlrpc相比, jsonrpc更加轻量,json更加节省数据量,更加可读性高. 官网网站: ...

  4. JSON-RPC轻量级远程调用协议介绍及使用

    这个项目能够帮助开发人员利用Java编程语言轻松实现JSON-RPC远程调用.jsonrpc4j使用Jackson类库实现Java对象与JSON对象之间的相互转换.jsonrpc4j包含一个JSON- ...

  5. PHPCURL直接访问JSONRPC服务

    <?php $ch = curl_init(); $url = 'http://localhost/jsonrpc?tm='.time().mt_rand (100,999); //参数是为了防 ...

  6. 利用QObject反射实现jsonrpc

    1.jsonrpc请求中的params数组生成签名 static QString signatureFromJsonArray(const QJsonArray &array) { QStri ...

  7. A simple json-rpc case for bitcoin blockchains

    #!/usr/bin/env python import json import jsonrpc import requests #url = "http://user:password@i ...

  8. 学习json-rpc

    最近做一个和SmartHome相关的项目,文档不全不说,连个像样的Demo都没,痛苦!!当然,这是题外话.今天来说说项目中主要用到的通讯协议:json-rpc,简单地说,它是以json格式进行的远程调 ...

  9. C语言JSON-RPC

         近期对json-rpc比較感兴趣,思想非常easy,并且看到了非常多不同语言的实现.在github上 hmngomes 的 json-rpc-c (实现的是server端,基于TCP流),短 ...

  10. Go学习笔记 - 使用jsonrpc进行远程访问

    Go学习笔记 - 使用jsonrpc进行远程访问 JSON-RPC JSON-RPC是一个轻量级的远程调用协议,简单易用. 请求数据体: { "method": "get ...

随机推荐

  1. Pinpoint - 应用性能管理(APM)平台实践之部署篇

    0.0 前言 国内的APM行业这两年刚刚起步,但是在国外却比较成熟了,并且由于这两年人力成本的快速提高,国内外涌现了几家非常不错的APM企业,例如APPdynamic,Dynamic,NewRelic ...

  2. MyEclipse 2014安装properties文件插件

    安装步骤 1.下载PropertiesEditor插件 http://propedit.sourceforge.jp/index_en.html2.解压出features.plugins文件3.在My ...

  3. 在容器服务kubernetes上配置https

    当前容器服务Kubernetes集群支持多种应用访问的形式,最常见形式如SLB:Port,NodeIP:NodePort和域名访问等.但是Kubernetes集群默认不支持HTTPS访问,如果用户希望 ...

  4. Distributed systems theory for the distributed systems engineer

    Gwen Shapira, SA superstar and now full-time engineer at Cloudera, asked a question on Twitter that ...

  5. ubuntu 连接windows远程桌面 &&rdesktop 退出全屏模式

    参考:http://www.asgone.net/ubuntu-connect-windows-remote-desktop/ 呵呵,使用上了ubuntu,怎么接连上我的服务器的远程桌面呢,找了找帮助 ...

  6. iOS 持续集成

    iOS 持续集成系列 - 开篇 前言 iOS 开发在经过这几年的野蛮生长之后,慢慢地趋于稳定.无论开发语言是 Objective-C 还是 Swift,工程类型是 Hybird 还是原生,开发思想是 ...

  7. Ubuntu中恢复rm命令误删文件(转)

    计算机系统:Ubuntu 16.04 1 背景 在做项目的时候,本来想使用rm命令删除以14开头的文件,结果写成如下形式: rm 14 * 注意,本来14和*之间不应该有空格的,但是误写了一个空格,结 ...

  8. 利用图片中的exif元数据批量查找图片中所包含的GPS信息

    在图片的exif(交换图像文件格式)中标准定义了如何存储图像和音频文件的标准,而在这些标签中往往存在了一些容易被人们忽视却又重要的东西. 有一款工具名为exiftool,可以快速的解析所有标签,并将结 ...

  9. Windbg使用方法

    hgy413的专栏 http://blog.csdn.net/hgy413/article/category/1143065

  10. HDU 3018 Ant Trip (欧拉回路)

    Ant Trip Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...