3
我們正在開發基於客戶端 - 服務器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地址和請求數據都處理混合起來,即我。即請求IP地址與其實際地址不匹配。
_dispatch的最後一行有問題還是我們錯過了什麼?
謝謝!
您定位的是哪個版本的python? – Marty