txJSONRPC बहुत अच्छा है। मैं इसका इस्तेमाल करता हूं और यह काम करता है। मेरा सुझाव है कि आप इसे आज़माएं।
सर्वर:
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()
ग्राहक:
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()
एक बोनस के रूप में, मैं कुछ वैकल्पिक छोड़ देंगे: amp। http://amp-protocol.net
दो मामूली परिवर्तनों को छोड़कर ठीक काम किया। उन्हें एक पर सहमत है सर्वर और बंदरगाहों क्लाइंट और सर्वर कोड में बेमेल में , और यह काम करता है: वर्ग मठ (jsonrpc.JSONRPC) को : मैं वर्ग मठ (jsonrpc.jsonRPC) को बदलने की जरूरत है ठीक – 1337Rooster
'd.addCallback (printValue) का उपयोग करना बेहतर हो सकता है; 'printValue()' से त्रुटियों को पकड़ने के लिए 'd.addCallbacks (printValue, printError) 'के बजाय d.addErrback (printError)'। – jfs
@ 1337Rooster, @ जेएफ। सेबेस्टियन: मैंने भविष्य के पाठकों के लिए आपके द्वारा उल्लेखित मुद्दों को ठीक कर दिया है। टिप्पणियों के लिए धन्यवाद। – nosklo