txJSONRPC es genial. Lo uso y funciona. Sugiero que lo pruebes.
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 beneficio adicional, voy a dejar alguna alternativa: amplificador. http://amp-protocol.net
Funcionó bien excepto por dos pequeños cambios. Necesitaba cambiar clase Math (jsonrpc.jsonRPC): a clase Math (jsonrpc.JSONRPC): en el servidor y los puertos falta de coincidencia en el código de cliente y el servidor, haga que ponerse de acuerdo sobre uno y funciona bien – 1337Rooster
Podría ser mejor usar 'd.addCallback (printValue); d.addErrback (printError) 'en lugar de' d.addCallbacks (printValue, printError) 'para detectar errores de' printValue() '. – jfs
@ 1337 Rooster, @ J.F. Sebastian: He solucionado los problemas que ustedes mencionaron para los lectores futuros. Gracias por los comentarios. – nosklo