class CommandTask(object): """ Context Manager to handle both parallel running and maintenance mode, it: - do not allow to run two django command wir the same ``session_key`` - do not allow to run the command if Maintenance-mode is active/pending session_key id of current command force if True ignore lock and run in parralel, if any timeout timeout for locking release check_maintenance check Maintenance mode """ def __init__(self, session_key, force=False, timeout=1, check_maintenance=False): self._key = "%s.lock" % session_key self.lock = FileLock(self._key) if check_maintenance: if api.is_pending() or api.is_offline(): raise MaintenanceModeError('Maintenance mode activated') if force: self.lock.break_lock() try: self.lock.acquire(timeout) except (AlreadyLocked, LockFailed, LockTimeout), e: raise CommandRunningError('Unable to lock', e)
def __init__(self, session_key, force=False, timeout=1, check_maintenance=False): """ :param session_key: id of current command :param force: if True ignore lock and run in parallel, if any :param timeout: timeout for locking release :param check_maintenance: check Maintenance mode :return: """ self._key = "%s.lock" % session_key self.lock = FileLock(self._key) if check_maintenance: if api.is_pending() or api.is_offline(): raise MaintenanceModeError('Maintenance mode activated') if force: self.lock.break_lock() try: self.lock.acquire(timeout) except (AlreadyLocked, LockFailed, LockTimeout), e: raise CommandRunningError('Unable to lock', e)
class CommandTask(object): """ Context Manager to handle both parallel running and maintenance mode, it: - do not allow to run two django command with the same ``session_key`` - do not allow to run the command if Maintenance-mode is active/pending """ def __init__(self, session_key, force=False, timeout=1, check_maintenance=False): """ :param session_key: id of current command :param force: if True ignore lock and run in parallel, if any :param timeout: timeout for locking release :param check_maintenance: check Maintenance mode :return: """ self._key = "%s.lock" % session_key self.lock = FileLock(self._key) if check_maintenance: if api.is_pending() or api.is_offline(): raise MaintenanceModeError('Maintenance mode activated') if force: self.lock.break_lock() try: self.lock.acquire(timeout) except (AlreadyLocked, LockFailed, LockTimeout), e: raise CommandRunningError('Unable to lock', e)
def __init__(self, session_key, force=False, timeout=1, check_maintenance=False): self._key = "%s.lock" % session_key self.lock = FileLock(self._key) if check_maintenance: if api.is_pending() or api.is_offline(): raise MaintenanceModeError('Maintenance mode activated') if force: self.lock.break_lock() try: self.lock.acquire(timeout) except (AlreadyLocked, LockFailed, LockTimeout), e: raise CommandRunningError('Unable to lock', e)
def __init__( self, session_key, force=False, timeout=1, check_maintenance=False): self._key = "%s.lock" % session_key self.lock = FileLock(self._key) if check_maintenance: if api.is_pending() or api.is_offline(): raise MaintenanceModeError('Maintenance mode activated') if force: self.lock.break_lock() try: self.lock.acquire(timeout) except (AlreadyLocked, LockFailed, LockTimeout), e: raise CommandRunningError('Unable to lock', e)