jsonrpc使用
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使用的更多相关文章
- NodeJS POST Request Over JSON-RPC
1.npm install art-template2.npm install request3.在app.js中加入以下代码转html: var template = require('art-t ...
- 使用Jayrock开源组件开发基于JSON-RPC协议的接口
最近接手一个以前的项目,无意间发现此项目开发接口的组件:Jayrock(接口组件估计用的少,用的最多的估计是这个Jayrock.json.dll,用于解析json) 以下是Jayrock的介绍官网: ...
- Lua JSONRPC学习笔记
JSON RPC JSON RPC 为利用json数据格式来执行远程调用方式, 作用同xmlrpc,不过与xmlrpc相比, jsonrpc更加轻量,json更加节省数据量,更加可读性高. 官网网站: ...
- JSON-RPC轻量级远程调用协议介绍及使用
这个项目能够帮助开发人员利用Java编程语言轻松实现JSON-RPC远程调用.jsonrpc4j使用Jackson类库实现Java对象与JSON对象之间的相互转换.jsonrpc4j包含一个JSON- ...
- PHPCURL直接访问JSONRPC服务
<?php $ch = curl_init(); $url = 'http://localhost/jsonrpc?tm='.time().mt_rand (100,999); //参数是为了防 ...
- 利用QObject反射实现jsonrpc
1.jsonrpc请求中的params数组生成签名 static QString signatureFromJsonArray(const QJsonArray &array) { QStri ...
- A simple json-rpc case for bitcoin blockchains
#!/usr/bin/env python import json import jsonrpc import requests #url = "http://user:password@i ...
- 学习json-rpc
最近做一个和SmartHome相关的项目,文档不全不说,连个像样的Demo都没,痛苦!!当然,这是题外话.今天来说说项目中主要用到的通讯协议:json-rpc,简单地说,它是以json格式进行的远程调 ...
- C语言JSON-RPC
近期对json-rpc比較感兴趣,思想非常easy,并且看到了非常多不同语言的实现.在github上 hmngomes 的 json-rpc-c (实现的是server端,基于TCP流),短 ...
- Go学习笔记 - 使用jsonrpc进行远程访问
Go学习笔记 - 使用jsonrpc进行远程访问 JSON-RPC JSON-RPC是一个轻量级的远程调用协议,简单易用. 请求数据体: { "method": "get ...
随机推荐
- 【转】【MySQL】MySQL的双机互信实战
[转]https://www.cnblogs.com/mchina/archive/2013/03/15/2956017.html MySQL双机实战原理:利用ssh传输文件,通过公.私钥的共享,实现 ...
- Android开发环境——Eclipse ADT相关内容汇总
Android开发环境将分为SDK相关内容.Eclipse ADT相关内容.模拟器AVD相关内容.调试器DDMS相关内容.日志LogCat相关内容.连接驱动ADB相关内容.内存泄露检测工具MAT相关 ...
- LATeX 插入脚注
LATeX 插入脚注: 使用 \footnote{...注释内容} 命令: To maximize the lower-bound $ we employ conjugate gradient me ...
- 运维人员20道必会iptables面试题
1.详述iptales工作流程以及规则过滤顺序? iptables过滤的规则顺序是由上至下,若出现相同的匹配规则则遵循由上至下的顺序 2.iptables有几个表以及每个表有几个链? Iptables ...
- 树莓派进阶之路 (008) - 树莓派安装ftp服务器(转)
vsftpd是开源的轻量级的常用ftp服务器. 1,安装vsftpd服务器 (约400KB) sudo apt-get install vsftpd 2,启动ftp服务 sudo serv ...
- nginx 安装SSL安全证书
安装证书 文件说明: 1. 证书文件214051493730988.pem,包含两段内容,请不要删除任何一段内容. 2. 如果是证书系统创建的CSR,还包含:证书私钥文件214051493730988 ...
- 【exe4j】如何利用exe4j把java桌面程序生成exe文件
前言: 我们都知道Java可以将二进制程序打包成可执行jar文件,双击这个jar和双击exe效果是一样一样的,但感觉还是不同.其实将java程序打包成exe也需要这个可执行jar文件. 准备: ecl ...
- iOS扩大UIButton按钮的可点击区域
一.开发中遇到的问题 我们在开发时有时遇到这中情况:UI给的图片很小,button的点击区域要求比较大.如果用 setBackgroundImage: 方式设置图片会导致图片也跟着button的fra ...
- iOS 相册相机应用2
在iOS中要拍照和录制视频最简单的方式就是调用UIImagePickerController,UIImagePickerController继承与UINavigationController,需要使用 ...
- git log退出方法
英文状态下按Q