diff --git a/erp5/util/taskdistribution/__init__.py b/erp5/util/taskdistribution/__init__.py index baa60353a541cfe7052a16841484e2acf80572eb..2891dcd8ab5a1d385c4e9764c79990dade235eef 100644 --- a/erp5/util/taskdistribution/__init__.py +++ b/erp5/util/taskdistribution/__init__.py @@ -95,16 +95,21 @@ def patchRPCParser(error_handler): parser_klass.feed = verbose_feed class RPCRetry(object): - def __init__(self, proxy, retry_time, logger): + def __init__(self, proxy, retry_time, logger, timeout=120): super(RPCRetry, self).__init__() self._proxy = proxy self._retry_time = retry_time self._logger = logger self.__rpc_lock = threading.Lock() + self.timeout = timeout def _RPC(self, func_id, args=()): - with self.__rpc_lock: - return getattr(self._proxy, func_id)(*args) + default_timeout = socket.getdefaulttimeout() + socket.setdefaulttimeout(self.timeout) + try: + return getattr(self._proxy, func_id)(*args) + finally: + socket.setdefaulttimeout(default_timeout) def _retryRPC(self, func_id, args=()): retry_time = self._retry_time