Использовать время ожидания:
Установить время ожидания для xmlrpclib.ServerProxy
РЕДАКТИРОВАТЬ
Ответ, связанный с здесьнесовместим с Python 2.7.Вот модифицированный код, который работает (проверено на W7 / ActivePython 2.7):
import xmlrpclib
import httplib
class TimeoutHTTPConnection(httplib.HTTPConnection):
def __init__(self,host,timeout=10):
httplib.HTTPConnection.__init__(self,host,timeout=timeout)
self.set_debuglevel(99)
#self.sock.settimeout(timeout)
"""
class TimeoutHTTP(httplib.HTTP):
_connection_class = TimeoutHTTPConnection
def set_timeout(self, timeout):
self._conn.timeout = timeout
"""
class TimeoutTransport(xmlrpclib.Transport):
def __init__(self, timeout=10, *l, **kw):
xmlrpclib.Transport.__init__(self,*l,**kw)
self.timeout=timeout
def make_connection(self, host):
conn = TimeoutHTTPConnection(host,self.timeout)
return conn
class TimeoutServerProxy(xmlrpclib.ServerProxy):
def __init__(self,uri,timeout=10,*l,**kw):
kw['transport']=TimeoutTransport(timeout=timeout, use_datetime=kw.get('use_datetime',0))
xmlrpclib.ServerProxy.__init__(self,uri,*l,**kw)
if __name__ == "__main__":
s=TimeoutServerProxy('http://127.0.0.1:8888',timeout=2)
print s.test()