2011-01-19 18 views
18

कोई भी मुड़कर उपयोग करके एक साधारण JSON RPC क्लाइंट और सर्वर सेट अप करने के लिए कुछ सरल कोड सुझा सकता है?पायथन ट्विस्ट JSON RPC

मुझे टीएक्सजेसन-आरपीसी मिला, लेकिन मैं सोच रहा था कि अगर इनमें से कुछ एएनसी का उपयोग करके किसी को कुछ अनुभव हो तो कुछ सिफारिश कर सकता है।

उत्तर

20

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

+0

दो मामूली परिवर्तनों को छोड़कर ठीक काम किया। उन्हें एक पर सहमत है सर्वर और बंदरगाहों क्लाइंट और सर्वर कोड में बेमेल में , और यह काम करता है: वर्ग मठ (jsonrpc.JSONRPC) को : मैं वर्ग मठ (jsonrpc.jsonRPC) को बदलने की जरूरत है ठीक – 1337Rooster

+0

'd.addCallback (printValue) का उपयोग करना बेहतर हो सकता है; 'printValue()' से त्रुटियों को पकड़ने के लिए 'd.addCallbacks (printValue, printError) 'के बजाय d.addErrback (printError)'। – jfs

+0

@ 1337Rooster, @ जेएफ। सेबेस्टियन: मैंने भविष्य के पाठकों के लिए आपके द्वारा उल्लेखित मुद्दों को ठीक कर दिया है। टिप्पणियों के लिए धन्यवाद। – nosklo

0

Cyclone, एक Tornado async वेब सर्वर कार्यान्वयन मुड़ का उपयोग कर लिखा है, एक अंतर्निहित में JSON-RPC अनुरोध हैंडलर अजगर json/simplejson मॉड्यूल का उपयोग करता है। उदाहरण सर्वर और क्लाइंट कोड here है। https://en.wikipedia.org/wiki/JSON-RPC#Implementations

जिसके अनुसार, txjason महसूस करता:

2

आप देख रहे हैं एक रूपरेखा स्वतंत्र दृष्टिकोण के लिए, this lib मैं (mixin का प्रयोग करके) उपयोगी हो सकता है धक्का दिया मुड़ने के साथ सबसे अच्छा एकीकृत की तरह। उदाहरण के लिए बॉक्स से ऑर्डर प्रतिक्रियाओं का समर्थन करना प्रतीत होता है। इसमें से अधिकांश छह का उपयोग करके python3 पोर्टेबल होगा। सबसे भयानक हिस्सा पैरामीटर सत्यापन है, जो सामान्य सार्वजनिक एपीआई में किसी भी तरह से खुलासा नहीं है।

0

विकिपीडिया अजगर के लिए सूचीबद्ध कार्यान्वयन का एक समूह है:

0

मेरे लिए यह क्लाइंट की बात करते हुए "पुस्तकालय" बेहतर काम करता है।

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