基于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第三方库


热门话题
Hibernate中的java高效删除   java ClassNotFoundException:org。阿帕奇。弗林克。流动。连接器。兔子。常见的RMQConnectionConfig$Builder   java使用正则表达式在括号中查找包含单个字符的单词   web服务如何在java WebMethod中获取POST/get参数?   java中HashMap的ArrayList上的流GroupBy   java“简单”Trie实现   java访问多态数组中的子类变量   java如何检索firebase数据中的嵌套对象   运行线程时java FixedThreadPool和异常   java SwaggerCodegen生成空类,而不是ByteArrayOutputStream的实例   java二进制十进制减法   java查找生成给定值的包的最小数量   映射创建错误Java   mongodb Java MongoTemplate在查询中排除子关系   java在toString方法中避免递归   java从HTML内容中删除空白?   java新的运算符和字符串在这个程序中做什么?   java将ActionListeners添加到小程序中的按钮数组中   java不使用SQL从JPA中删除数据