Python ritorto JSON RPC
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.
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:
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)))