Python Twisted JSON RPC - PullRequest
       27

Python Twisted JSON RPC

19 голосов
/ 19 января 2011

Может кто-нибудь порекомендовать какой-нибудь простой код для настройки простого JSON RPC-клиента и сервера с использованием twisted?

Я нашел txJSON-RPC, но мне было интересно, может кто-нибудь поработать с некоторыми из этих anc, может что-нибудь порекомендовать.

Ответы [ 5 ]

21 голосов
/ 19 января 2011

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

2 голосов
/ 10 октября 2012

Если вы ищете независимый от фреймворка подход, эта библиотека , которую я нажал (используя mixin), может быть полезна:

0 голосов
/ 24 февраля 2016

Для меня это работало лучше, чем "библиотеки", если говорить о клиенте.

    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)))
0 голосов
/ 30 августа 2013

В википедии есть несколько реализаций, перечисленных для python: https://en.wikipedia.org/wiki/JSON-RPC#Implementations

Тем не менее, txjason похоже на ту, которая лучше всего интегрируется с витой.Кажется, он поддерживает нестандартные ответы, например, из коробки.Большинство из них будут переносимы на python3, используя шесть.Самая ужасная часть - это проверка параметров, которая в любом случае не раскрывается в обычном публичном API.

0 голосов
/ 06 июня 2011

Cyclone , реализация асинхронного веб-сервера Tornado , написанная с использованием twisted, имеет встроенный обработчик запросов json-rpc, который использует модуль python json / simplejson.Пример кода сервера и клиента здесь .

...