19

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

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

4

5 回答 5

21

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

于 2011-01-19T17:30:06.423 回答
2

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

于 2012-10-10T07:20:14.590 回答
0

Cyclone是使用 twisted 编写的Tornado异步 Web 服务器实现,具有使用 python json/simplejson 模块的内置 json-rpc 请求处理程序。示例服务器和客户端代码在这里

于 2011-06-05T22:59:24.663 回答
0

wikipedia 列出了一堆用于 python 的实现:https ://en.wikipedia.org/wiki/JSON-RPC#Implementations

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

于 2013-08-30T13:43:41.103 回答
0

对我来说,这比“图书馆”更好,谈到客户。

    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)))
于 2016-02-24T09:16:04.947 回答