私たちは、クライアント/サーバーXML-RPCベースのアプリケーションを開発しています。サーバー部分は、要求ごとに各クライアントのIPアドレスを知っている必要があります。SimpleXMLRPCServer要求ディスパッチングの問題
これを達成するために、SocketServer.ThreadingMixInをSimpleXMLRPCServerに組み込み、SimpleXMLRPCRequestHandlerをサブクラス化して_dispatchメソッドを再定義します。以下はコードです
class ThreadedXMLRPCServer(SocketServer.ThreadingMixIn, SimpleXMLRPCServer.SimpleXMLRPCServer):
pass
class RequestHandler(SimpleXMLRPCServer.SimpleXMLRPCRequestHandler):
def _dispatch(self, method, params):
function = self.server.funcs[method]
def decor(function, ip_addr):
def new_function(*args):
try:
return function(ip_addr, *args)
except Exception, err:
log_msg('Exception ocurred in XMLRPC thread (%s)!' % err)
return new_function
return decor(function, self.client_address[0])(*params)
問題は、IPアドレスを要求し、要求データがすべて混在して処理されることです。 e。リクエストのIPアドレスが実際のアドレスと一致しません。
_dispatchの最後の行に問題がありますか、何か不足していますか?
ありがとうございます!
どのバージョンのPythonをターゲットにしていますか? – Marty