0
私は装飾されているいくつかの機能を登録する必要があるXML RPCサーバーを持っています。私は、クライアントからこれらの登録関数を呼び出すたびに、私はエラーの下に取得する:Pythonで装飾された関数を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})
どのようにこのエラーを解決することができd。 PythonでXML RPCを使って装飾された関数を呼び出すための好ましい方法は何ですか?
lib/python2.7/xmlrpclib.py "、line 793、close in raiseエラー(** self._stack [0]) xmlrpclib.Fault:<フォルト1:":整数is required "> ' @Shpionus:このエラーがなぜ起こっているのでしょうか? –
user2819403
現在のバージョンのコードを表示できますか? –