On Mon, Feb 22, 2010 at 03:38:53PM +0000, Michael Hanselmann wrote:
> 2010/2/22 Iustin Pop <[email protected]>:
> > On Mon, Feb 22, 2010 at 01:45:53PM +0100, Michael Hanselmann wrote:
> >> --- a/lib/luxi.py
> >> +++ b/lib/luxi.py
> >> @@ -156,15 +157,25 @@ class Transport:
> >>
> >>      try:
> >>        self.socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
> >> -      self.socket.settimeout(self._ctimeout)
> >> +
> >> +      def _Connect():
> >
> > Could this be at class level rather than defined in this method?
> 
> Yes, made it a static method. Will resend.
> 
> >>        try:
> >> -        self.socket.connect(address)
> >> -      except socket.timeout, err:
> >> -        raise TimeoutError("Connect timed out: %s" % str(err))
> >> -      except socket.error, err:
> >> -        if err.args[0] in (errno.ENOENT, errno.ECONNREFUSED):
> >> -          raise NoMasterError(address)
> >> -        raise
> >> +        utils.Retry(_Connect, 1.0, self._ctimeout)
> >> +      except utils.RetryTimeout:
> >> +        raise TimeoutError("Connect timed out")
> >
> > Mmm.... 1.0 hardcoded? LGTM, but if any other functions deal with EAGAIN
> > we might want to have a global constant for EAGAIN retry delays.
> 
> This is really a special case for EAGAIN. It only happens when the
> server's listen backlog is full.

OK, makes sense.

iustin

Reply via email to