Python 扭曲 JSON RPC

发布于 2024-10-13 06:58:58 字数 109 浏览 3 评论 0原文

谁能推荐一些简单的代码来使用twisted设置一个简单的JSON RPC客户端和服务器?

我找到了 txJSON-RPC,但我想知道是否有人有使用其中一些 anc 的经验可以推荐一些东西。

Can anyone recommend some simple code to set up a simple JSON RPC client and server using twisted?

I found txJSON-RPC, but I was wondering if someone had some experience using some of these anc could recommend something.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

傲影 2024-10-20 06:58:58

txJSONRPC 很棒。我用它并且它有效。我建议你尝试一下。

服务器:

from txjsonrpc.web import jsonrpc
from twisted.web import server
from twisted.internet import reactor

class Math(jsonrpc.JSONRPC):
    """
    An example object to be published.
    """
    def jsonrpc_add(self, a, b):
        """
        Return sum of arguments.
        """
        return a + b

reactor.listenTCP(7080, server.Site(Math()))
reactor.run()

客户端:

from twisted.internet import reactor
from txjsonrpc.web.jsonrpc import Proxy

def printValue(value):
    print "Result: %s" % str(value)

def printError(error):
    print 'error', error

def shutDown(data):
    print "Shutting down reactor..."
    reactor.stop()

proxy = Proxy('http://127.0.0.1:7080/')

d = proxy.callRemote('add', 3, 5)
d.addCallback(printValue).addErrback(printError).addBoth(shutDown)
reactor.run()

作为奖励,我会留下一些替代方案:amp。
http://amp-protocol.net

txJSONRPC is great. I use it and it works. I suggest you give it a try.

SERVER:

from txjsonrpc.web import jsonrpc
from twisted.web import server
from twisted.internet import reactor

class Math(jsonrpc.JSONRPC):
    """
    An example object to be published.
    """
    def jsonrpc_add(self, a, b):
        """
        Return sum of arguments.
        """
        return a + b

reactor.listenTCP(7080, server.Site(Math()))
reactor.run()

CLIENT:

from twisted.internet import reactor
from txjsonrpc.web.jsonrpc import Proxy

def printValue(value):
    print "Result: %s" % str(value)

def printError(error):
    print 'error', error

def shutDown(data):
    print "Shutting down reactor..."
    reactor.stop()

proxy = Proxy('http://127.0.0.1:7080/')

d = proxy.callRemote('add', 3, 5)
d.addCallback(printValue).addErrback(printError).addBoth(shutDown)
reactor.run()

As a bonus, I will leave some alternative: amp.
http://amp-protocol.net

惯饮孤独 2024-10-20 06:58:58

如果您正在寻找一种独立于框架的方法,这个库我推了(使用mixin)可能会有所帮助:

If you are looking for a framework-independent approach, this lib I pushed (using mixin) might be helpful:

尝蛊 2024-10-20 06:58:58

旋风,一个Tornado 使用twisted编写的异步Web服务器实现,有一个使用python json/simplejson模块的内置json-rpc请求处理程序。示例服务器和客户端代码位于此处

Cyclone, a Tornado async web server implementation written using twisted, has a built-in json-rpc request handler that uses the python json/simplejson module. Example server and client code is here.

夏尔 2024-10-20 06:58:58

维基百科列出了一系列 Python 实现: https://en.wikipedia.org/wiki /JSON-RPC#Implementations

也就是说,txjason 感觉是与twisted 集成最好的一个。例如,它似乎支持开箱即用的乱序响应。其中大部分可以使用 6 移植到 python3。最可怕的部分是参数验证,无论如何,它不会在正常的公共 API 中公开。

wikipedia has a bunch of implementations listed for python: https://en.wikipedia.org/wiki/JSON-RPC#Implementations

That said, txjason feels like the one best integrated with twisted. It seems to support out of order responses out of the box for example. Most of it would be portable to python3 using six. The most horrible part is the parameter validation, which is not exposed in the normal public API anyway.

撩发小公举 2024-10-20 06:58:58

对我来说,就客户而言,这比“图书馆”效果更好。

    TESTDATA = {'id': 1234,
                'method': 'getbalance',
                }
    URL = 'http://localhost:7777'

    d= getPage(URL,method="POST",postdata=json.dumps(TESTDATA))
    d.addBoth(lambda x :print(json.loads(x)))

For me this worked better then "libraries" , speaking of client.

    TESTDATA = {'id': 1234,
                'method': 'getbalance',
                }
    URL = 'http://localhost:7777'

    d= getPage(URL,method="POST",postdata=json.dumps(TESTDATA))
    d.addBoth(lambda x :print(json.loads(x)))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文