Python Twisted JSON RPC
json-rpc (5)
Para mí esto funcionó mejor que las "bibliotecas", hablando de 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)))
¿Alguien puede recomendar algún código simple para configurar un cliente y un servidor JSON RPC simples usando retorcido?
Encontré txJSON-RPC, pero me preguntaba si alguien tenía experiencia en el uso de algunos de estos y podría recomendar algo.
Si está buscando un enfoque independiente del marco, esta biblioteca que presioné (usando mixin) podría ser útil:
txJSONRPC es genial. Lo uso y funciona. Te sugiero que lo intentes.
SERVIDOR:
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()
Como bonus, os dejo alguna alternativa: amp. http://amp-protocol.net
wikipedia tiene un montón de implementaciones listadas para python: https://en.wikipedia.org/wiki/JSON-RPC#Implementations
Dicho esto, txjason siente como el mejor integrado con trenzado. Parece que soporta respuestas fuera de orden fuera de la caja, por ejemplo. La mayor parte sería portable a python3 usando seis. La parte más horrible es la validación de parámetros, que de todos modos no está expuesta en la API pública normal.