适合在“pyjamas”服务器端使用的简单Python WSGI兼容jsonrpc库有哪些?
最近,我发现了一个叫做 pyjamas 的框架。这个框架提倡一种完全不同的网页应用开发方式,它把'MVC'中的'视图'部分分开,使用一些HTML和JavaScript(这些JavaScript是用编译过的Python生成的),而不是传统的模板。这种客户端的'视图'应该通过异步HTTP请求与服务器进行沟通,框架推荐使用'jsonrpc'作为通信协议。
在他们的文档中,使用了一个基于Django的jsonrpc组件。但我更习惯于简单直接的解决方案,比如 bottle框架。根据我的理解,我甚至不需要这些微框架的所有组件。只需要一个兼容WSGI的服务器,加上一些路由和会话中间件,以及一个能理解jsonrpc的请求处理器就可以了。我在寻找一个易于使用的轻量级解决方案,特别是一个可以很好地融入WSGI环境的jsonrpc请求处理器。有没有这样的东西呢?
如果我对术语的使用有误,请原谅并纠正我。
2 个回答
1
这是一个链接,指向一个名为“simple-jsonrpc”的项目,存放在GitHub上。这个项目可能是关于简单的JSON-RPC(远程过程调用)实现的。你可以通过这个链接查看项目的详细信息和代码。
import jsonrpc
def add(a, b):
return a + b
def default(*arg, **kwargs):
return "hello jsonrpc"
class MyJsonrpcHandler(jsonrpc.JsonrpcHandler):
"""define your own dispatcher here"""
def dispatch(self, method_name):
if method_name == "add":
return add
else:
return default
def application(environ, start_response):
# assert environ["REQUEST_METHOD"] = "POST"
content_length = int(environ["CONTENT_LENGTH"])
# create a handler
h = MyJsonrpcHandler()
# fetch the request body
request = environ["wsgi.input"].read(content_length)
# pass the request body to handle() method
result = h.handle(request)
#log
environ["wsgi.errors"].write("request: '%s' | response: '%s'\n" % (request, result))
start_response("200 OK", [])
return [result]
1
你可能现在已经选择了一些库了。不过无所谓。
我使用的是flask和jsonrpc2。下面是一些伪代码。我的代码和这个很相似。
import jsonrpc2
mapper = jsonrpc2.JsonRpc()
mapper['echo'] = str
@app.route('/rpc', methods=['GET', 'POST'])
def rpc():
#req {"jsonrpc": "2.0", "method": methodname, "params": params, "id": 1}
data = mapper(request.json)
return jsonify(data)