基于decorator的工具包,使用jsonrpc就像烧瓶一样简单。支持异步。

py-json-rpc的Python项目详细描述


[![Circleci](https://circleci.com/gh/hachibeedi/py-json-rpc.svg?style=svg)(https://circleci.com/gh/hachibeedi/py-json-rpc)


!它可以提高批处理调用性能。



只是创建http处理程序的示例。你可以用其他的http处理溶液瓶,django…如果您愿意的话。

``python


import json


import requests
import torado.ioloop
import torado.web


从json-rpc.server.http import-create-hoge处理程序发出请求




y):
返回x+y




'方法':'aa',
'参数':{'aa':'rpc'},
'id':'111',
})
rpc2=rpc嫒dispatcher(发出请求('test/hyoe',{'x':20,'y':10}))
打印(json.dumps(rpc))
"id":"111"}
打印(json.dumps(rpc))
=>;u'{"jsonrpc":"2.0","result":"cccc called","id":"some_uid_for_you"}

创建_handler(tornado.web.requesthandler)),
]
app=make_app()
app.listen(8888)
tornado.ioloop.ioloop.current().start()

"
"发出rpc请求的示例
"
"打印(requests.post('http://localhost:8888/rpc',data=json.dumps(发出请求('aa',{'aa':'cccc'})).text)
"2.0","结果":6,"id":"cff9667f-a520-a520-a520-42cf-9216-ef2fa05a51a213"}

` ` `



` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `u rpc(x,y):
返回x+y


@app.register
异步定义减号(x,y):
返回x-y


@app.register
异步定义重请求(a):
打印(f'启动重请求…{a}秒')
等待异步睡眠(a)
打印(结束重请求…)
返回"主页!"


"
调用这些函数与非异步版本没有区别。
测试代码中有更多示例。文档正在编写中…
"



def test_plain():
""
函数将与正常调用时一样异步。
"
"result=asyncio.确保未来(加上rpc(1,2))
result=loop.运行直至完成(result)
assert result==3,结果



def test_positional_rpc_call():
rpc_result=app.dispatch({
'jsonrpc':'2.0',
'method':'plus_rpc',
'params':[1,2],
'id':111,
})
assert rpc_result.get('result')=3,rpc_result

```



函数"create_handler"将为tornado创建一个处理程序实例。
请使用aw实例没有实现任何安全功能。如果您希望rpc端点是公共的,那么您可能需要考虑自己创建一个处理程序(或者可以随意打开一个问题…或者当然是pr!).


rpc庘dispatcher


app=flask(庘name庘)


@register
def hoge(name):
return f'{name}called'


@app.route('/',methods=['post'])
def hello():
result=rpc嫒dispatcher(request.json)
返回json.dumps(result)
``````

```测试:

```python
>;>print(requests.post('http://localhost:5000',json=make嫒request('hoge',,['cccc'])。文本)
````



与django集成

视图可以很容易地与这个模块集成。



\批处理请求和正确的错误代码。



欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Google Billing Library:QueryPurchaseAsync:取消购买的订阅资源未返回   java转换列表mapsturct中的单个对象   java简单算法。我做不好   包含集合的@ManyToMany映射的java JPA2持久性   在Java中序列化和反序列化对象时发生BuffereImage错误   java使用ui:param传递值并在backingbean中访问它们   java从应用程序读取配置。yml至POJO列表地图   java中在while循环外部调用文件值   java如何与来自不同类的UI交互   java如何在jTable中显示2D数组?   在Java 8中,类为什么不从接口继承默认方法?   java类。getAnnotation和getAnnotations无法正常工作   java处理pagertabstrip上的触摸事件   java GWT和struts2异常   用Java解析HTTP查询字符串   java这段代码SQL注入安全吗?