Exemple #1
0
 def lock(self):
     timeout = self.timeout
     while 1:
         try:
             self.trylock()
             return 1
         except error.LockHeld, inst:
             if timeout != 0:
                 time.sleep(1)
                 if timeout > 0:
                     timeout -= 1
                 continue
             raise error.LockHeld(errno.ETIMEDOUT, inst.filename, self.desc,
                                  inst.locker)
Exemple #2
0
 def trylock(self):
     if self.held:
         self.held += 1
         return
     if lock._host is None:
         lock._host = socket.gethostname()
     lockname = '%s:%s' % (lock._host, os.getpid())
     while not self.held:
         try:
             util.makelock(lockname, self.f)
             self.held = 1
         except (OSError, IOError), why:
             if why.errno == errno.EEXIST:
                 locker = self.testlock()
                 if locker is not None:
                     raise error.LockHeld(errno.EAGAIN, self.f, self.desc,
                                          locker)
             else:
                 raise error.LockUnavailable(why.errno, why.strerror,
                                             why.filename, self.desc)