def acquire(self): """Acquire a lock for that task and remove any previous stale lock""" lock = self._getLock() if lock: if lock.updateDate < datetime.now() - 2 * timedelta(seconds=tui.MTIME_POLL_INTERVAL): # Stale lock, removing TaskLock.delete(lock.id) else: raise YokadiException("Task %s is already locked by process %s" % (lock.task.id, lock.pid)) TaskLock(task=self.task, pid=os.getpid(), updateDate=datetime.now())
def release(self): """Release the lock for that task""" # Only release our lock lock = self._getLock() if lock and lock.pid == os.getpid(): TaskLock.delete(lock.id)