0
필자는 장식 된 일부 기능을 등록해야하는 XML RPC 서버를 가지고 있습니다. 나는 클라이언트에서 그 등록 된 함수를 호출 할 때마다, 나는 오류가 아래 얻을 :파이썬에서 XML RPC로 데코 레이팅 된 함수를 호출하는 방법은 무엇입니까?
xmlrpclib.Fault : : 방법 "테스트"가 지원되지 않습니다 '> 아래
코드입니다 :서버 코드 :
from SimpleXMLRPCServer import SimpleXMLRPCServer
import functools
import xmlrpclib
class Server(object):
def __init__(self, hostport):
self.server = SimpleXMLRPCServer(hostport)
def serve_forever(self):
self.server.serve_forever()
server = Server(('localhost', 8000))
def wrapper(func):
def checker(*args):
if isinstance(args[-1], dict):
args = list(args)
kwargs = args.pop(args[-1])
return func(*args, **kwargs)
else:
return func(*args)
return checker
@wrapper
def test(kwargs):
print kwargs
return 0
server.server.register_function(wrapper, "wrapper")
server.server.register_function(test, "test")
server.serve_forever()
클라이언트 코드 :
import xmlrpclib
import functools
import inspect
_orig_Method = xmlrpclib._Method
class KeywordArgMethod(_orig_Method):
def __call__(self, *args, **kwargs):
args = list(args)
if kwargs:
args = list(args)
args.append(kwargs)
return _orig_Method.__call__(self, *args)
xmlrpclib._Method = KeywordArgMethod
class ServerProxy(object):
def __init__(self, url):
self._xmlrpc_server_proxy = xmlrpclib.ServerProxy(url)
#example usage
if __name__ == "__main__":
server = ServerProxy('http://localhost:8000')
server._xmlrpc_server_proxy.test(**{'arg1':1, 'arg2':2})
하는 방법이 오류가 해결 될 수있다 디. 파이썬에서 XML RPC를 사용하여 데코 레이팅 된 함수를 호출하는 기본 방법은 무엇입니까?
lib/python2.7/xmlrpclib.py ", 줄 793, 닫음 raise 오류 (** self._stack [0]) xmlrpclib.Fault : <오류 1 :"<유형 'exceptions.TypeError'> : 정수 is required "> ' @Shpionus : 왜이 오류가 발생하는지 알고 싶습니까? – user2819403
현재 코드 버전을 표시 할 수 있습니까? –