Frage

Kann jemand etwas einfachen Code empfehlen einzurichten verdreht einen einfachen JSON-RPC-Client und -Server unter Verwendung?

fand ich txJSON-RPC, aber ich frage mich, ob jemand etwas Erfahrung mit einigen dieser anc hatte etwas empfehlen könnte.

War es hilfreich?

Lösung

txJSONRPC ist groß. Ich benutze es und es funktioniert. Ich schlage vor, Sie probieren Sie es aus.

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

CLIENT:

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

Als Bonus werde ich einige alternative verlassen: Amp. http://amp-protocol.net

Andere Tipps

Wenn Sie suchen einen Rahmen unabhängigen Ansatz, diese lib I geschoben (mit mixin) könnte hilfreich sein:

Cyclone , ein Tornado Umsetzung async Webserver geschrieben verdrillt verwendet wird, hat einen eingebauten in json-RPC-Anfrage-Handler, verwendet der Python json / simplejson Modul. Beispiel Server- und Client-Code ist hier .

wikipedia hat eine Reihe von Implementierungen für Python aufgelistet: https: //en.wikipedia. org / wiki / JSON-RPC # Implementations

sagte, dass txjason fühlt sich an wie das am besten mit verdrehten integriert. Es scheint aus dem Kasten zum Beispiel des Auftrags Antworten zu unterstützen, aus. Das meiste davon wäre tragbar python3 sechs verwenden. Der schrecklichste Teil ist die Parametervalidierung, die ohnehin nicht im normalen öffentlichen API ausgesetzt ist.

Für mich war besser als "Bibliotheken", den Client sprechen.

    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)))
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top