Domanda

Qualcuno può raccomandare un certo codice semplice da configurare un semplice client JSON RPC e server utilizzando contorto?

Ho trovato txJSON-RPC, ma mi chiedevo se qualcuno ha avuto qualche esperienza con alcuni di questi anc potrebbe consigliare qualcosa.

È stato utile?

Soluzione

txJSONRPC è grande. Io lo uso e funziona. Vi suggerisco di fare un tentativo.

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()

CLIENTE:

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()

Come bonus, ho lascerà qualche alternativa: amp. http://amp-protocol.net

Altri suggerimenti

Se siete alla ricerca di un approccio quadro indipendente, questo lib I spinto (utilizzando mixin) potrebbe essere utile:

Cyclone , un Tornado implementazione del server web asincrone scritto usando contorto, ha un gestore di richiesta di built-in jSON-RPC che utilizza il pitone jSON / simplejson modulo. server di esempio e codice del client è qui .

Wikipedia ha un sacco di implementazioni elencati per python: https: //en.wikipedia. org / wiki / JSON-RPC # Implementazioni

Detto questo, txjason sente come quella meglio integrata con contorto. Sembra di sostenere di risposte di ordine fuori dalla scatola, per esempio. La maggior parte di esso sarebbe portabile su python3 utilizzando sei. La parte più orribile è la convalida dei parametri, che non è esposto nel normale API pubblica in ogni caso.

Per me questo ha funzionato meglio di "librerie", parlando del cliente.

    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)))
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top