哪个简单的基于 python 的 WSGI 兼容 jsonrpc 库在服务器端用于“睡衣”?

Posted

技术标签:

【中文标题】哪个简单的基于 python 的 WSGI 兼容 jsonrpc 库在服务器端用于“睡衣”?【英文标题】:Which simple python based WSGI compatible jsonrpc library to use in server side for 'pyjamas'? 【发布时间】:2011-06-20 17:56:36 【问题描述】:

最近,我遇到了pyjamas 框架。它通过将 'MVC' 的整个 'view' 组件分离成一些 html + javascript(使用编译的 python 生成)来鼓励完全不同的 Web 应用程序开发方法,而不是使用传统的模板。这个客户端“视图”应该通过异步HTTP请求与服务器通信,框架建议使用“jsonrpc”作为通信协议。

在他们的文档中,他们使用了基于 django 的 jsonrpc 组件。但我大多习惯于像bottle framework 这样简单而愚蠢的解决方案。据我了解,我什至不需要此类微框架的所有组件。一个 WSGI 兼容的服务器、一些路由 + 会话中间件和一个可以理解 jsonrpc 的请求处理程序就可以了。我正在为最后一部分寻找一个易于使用的轻量级解决方案——现成的 jsonrpc 感知请求处理程序,它可以很好地插入 WSGI 环境。有吗?

如果有的话,请原谅并纠正我对术语的误用/误解。

【问题讨论】:

【参考方案1】:

您现在可能已经选择了某个库。但无论如何。

我使用烧瓶和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)

【讨论】:

实际上我转向了其他项目。无论如何,很高兴知道你是如何做到的。再次感谢。 当然。我有点期待。这个答案更有益于搜索将他们带到此页面的开发人员:-)。【参考方案2】:

https://github.com/dengzhp/simple-jsonrpc

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]

【讨论】:

以上是关于哪个简单的基于 python 的 WSGI 兼容 jsonrpc 库在服务器端用于“睡衣”?的主要内容,如果未能解决你的问题,请参考以下文章

Python Web 应用:WSGI基础

python用于啥方向

python框架Django与WSGI

新手从Python的哪个版本开始学比较好?

检查 Mod_WSGI 中使用的 Python 版本

使用 mod_wsgi 在 Centos 6.5 上部署基于 python3.4 的 Django 项目:可行吗?