누군가 간단한 코드를 사용하여 간단한 JSON RPC 클라이언트와 서버를 트위스트 방식으로 설정할 수 있습니까?Python Twisted JSON RPC
txJSON-RPC가 발견되었지만, 누군가이 anc 중 일부를 사용하여 경험이 있다면 궁금합니다.
누군가 간단한 코드를 사용하여 간단한 JSON RPC 클라이언트와 서버를 트위스트 방식으로 설정할 수 있습니까?Python Twisted JSON RPC
txJSON-RPC가 발견되었지만, 누군가이 anc 중 일부를 사용하여 경험이 있다면 궁금합니다.
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()
, 나는 몇 가지 대안을 떠날 것이다 : A. http://amp-protocol.net
Cyclone 트위스트하여 작성된 Tornado 비동기 웹 서버 구현은, 내장 된 파이썬 JSON/simplejson 모듈을 사용 JSON-RPC 요청 핸들러. 서버 및 클라이언트 코드 예제는 here입니다. 말했다 https://en.wikipedia.org/wiki/JSON-RPC#Implementations
, txjason 온도 :
당신이 프레임 워크에 독립적 인 방법을 찾고 있다면, this lib 내가 도움이 될 수 있습니다 (믹스 인을 사용하여) 추진 최고의 꼬인 것과 같은 것. 예를 들어 아웃 오브 더 박스 (out of box) 응답을 지원하는 것으로 보인다. 대부분은 6을 사용하여 python3에 이식 가능합니다. 가장 끔찍한 부분은 매개 변수 유효성 검사로, 일반 공용 API에서는 공개되지 않습니다.
위키 피 디아는 파이썬에 대해 나열된 구현의 무리가 있습니다
클라이언트의 경우 "라이브러리"가 좋았습니다.
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)))
두 가지 사소한 변경을 제외하고는 정상적으로 작동합니다. 그 하나에 동의 한 및 포트가 클라이언트와 서버 코드 불일치 서버에서 와 그것을 작동 : 클래스 수학 (jsonrpc.JSONRPC)에 : 나는 클래스 수학 (jsonrpc.jsonRPC)를 변경하는 데 필요한 fine – 1337Rooster
'd.addCallback (printValue);를 사용하는 것이 더 나을지도 모른다. d.addCallbacks (printValue, printError)'대신'd.addErrback (printError)'를 사용하여'printValue()'에서 에러를 잡아 낸다. – jfs
@ 1337Rooster, @ J.F. Sebastian : 나는 미래 독자들을 위해 언급 한 문제를 해결했습니다. 의견에 감사드립니다. – nosklo