Python redis.exceptions.LockError() Examples
The following are 30
code examples of redis.exceptions.LockError().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
redis.exceptions
, or try the search function
.
Example #1
Source File: lock.py From satori with Apache License 2.0 | 6 votes |
def do_release(self, expected_token): if not bool(self.lua_release(keys=[self.name], args=[expected_token], client=self.redis)): raise LockError("Cannot release a lock that's no longer owned")
Example #2
Source File: lock.py From scalyr-agent-2 with Apache License 2.0 | 6 votes |
def do_extend(self, additional_time): pipe = self.redis.pipeline() pipe.watch(self.name) lock_value = pipe.get(self.name) if lock_value != self.local.token: raise LockError("Cannot extend a lock that's no longer owned") expiration = pipe.pttl(self.name) if expiration is None or expiration < 0: # Redis evicted the lock key between the previous get() and now # we'll handle this when we call pexpire() expiration = 0 pipe.multi() pipe.pexpire(self.name, expiration + int(additional_time * 1000)) try: response = pipe.execute() except WatchError: # someone else acquired the lock raise LockError("Cannot extend a lock that's no longer owned") if not response[0]: # pexpire returns False if the key doesn't exist raise LockError("Cannot extend a lock that's no longer owned") return True
Example #3
Source File: test_pypi_packages.py From Flask-Large-Application-Example with MIT License | 6 votes |
def test_sync_parallel(alter_xmlrpc): alter_xmlrpc([dict(name='packageD', summary='Test package.', version='3.0.0'), ]) redis.delete(POLL_SIMPLE_THROTTLE) redis_key = CELERY_LOCK.format(task_name='pypi_portal.tasks.pypi.update_package_list') lock = redis.lock(redis_key, timeout=1) assert lock.acquire(blocking=False) assert '302 FOUND' == current_app.test_client().get('/pypi/sync').status expected = [('packageB', 'Test package.', '3.0.0'), ] actual = db.session.query(Package.name, Package.summary, Package.latest_version).all() assert expected == actual try: lock.release() except LockError: pass
Example #4
Source File: lock.py From revsync with MIT License | 6 votes |
def do_extend(self, additional_time): pipe = self.redis.pipeline() pipe.watch(self.name) lock_value = pipe.get(self.name) if lock_value != self.local.token: raise LockError("Cannot extend a lock that's no longer owned") expiration = pipe.pttl(self.name) if expiration is None or expiration < 0: # Redis evicted the lock key between the previous get() and now # we'll handle this when we call pexpire() expiration = 0 pipe.multi() pipe.pexpire(self.name, expiration + int(additional_time * 1000)) try: response = pipe.execute() except WatchError: # someone else acquired the lock raise LockError("Cannot extend a lock that's no longer owned") if not response[0]: # pexpire returns False if the key doesn't exist raise LockError("Cannot extend a lock that's no longer owned") return True
Example #5
Source File: lock.py From gimel with MIT License | 6 votes |
def do_extend(self, additional_time): pipe = self.redis.pipeline() pipe.watch(self.name) lock_value = pipe.get(self.name) if lock_value != self.local.token: raise LockError("Cannot extend a lock that's no longer owned") expiration = pipe.pttl(self.name) if expiration is None or expiration < 0: # Redis evicted the lock key between the previous get() and now # we'll handle this when we call pexpire() expiration = 0 pipe.multi() pipe.pexpire(self.name, expiration + int(additional_time * 1000)) try: response = pipe.execute() except WatchError: # someone else acquired the lock raise LockError("Cannot extend a lock that's no longer owned") if not response[0]: # pexpire returns False if the key doesn't exist raise LockError("Cannot extend a lock that's no longer owned") return True
Example #6
Source File: locks.py From micromasters with BSD 3-Clause "New" or "Revised" License | 6 votes |
def release_lock(lock_name, token): """ Release a lock Args: lock_name (str): The lock key in redis token (bytes): The unique id used Returns: bool: True if the lock was successfully released """ # this is a StrictRedis instance, we need this for the script installation that LuaLock uses redis = caches['redis'].client.get_client() lock = LuaLock(redis, lock_name) try: lock.do_release(token) except LockError: # If the lock is expired we don't want to raise an error pass
Example #7
Source File: lock.py From satori with Apache License 2.0 | 6 votes |
def do_extend(self, additional_time): pipe = self.redis.pipeline() pipe.watch(self.name) lock_value = pipe.get(self.name) if lock_value != self.local.token: raise LockError("Cannot extend a lock that's no longer owned") expiration = pipe.pttl(self.name) if expiration is None or expiration < 0: # Redis evicted the lock key between the previous get() and now # we'll handle this when we call pexpire() expiration = 0 pipe.multi() pipe.pexpire(self.name, expiration + int(additional_time * 1000)) try: response = pipe.execute() except WatchError: # someone else acquired the lock raise LockError("Cannot extend a lock that's no longer owned") if not response[0]: # pexpire returns False if the key doesn't exist raise LockError("Cannot extend a lock that's no longer owned") return True
Example #8
Source File: lock.py From satori with Apache License 2.0 | 6 votes |
def do_release(self, expected_token): name = self.name def execute_release(pipe): lock_value = pipe.get(name) if lock_value != expected_token: raise LockError("Cannot release a lock that's no longer owned") pipe.delete(name) self.redis.transaction(execute_release, name)
Example #9
Source File: tasks.py From safe-relay-service with MIT License | 6 votes |
def check_pending_transactions() -> int: """ Find txs that have not been mined after a while :return: Number of pending transactions """ number_txs = 0 try: redis = RedisRepository().redis with redis.lock('tasks:check_pending_transactions', blocking_timeout=1, timeout=60): tx_not_mined_alert = settings.SAFE_TX_NOT_MINED_ALERT_MINUTES txs = SafeMultisigTx.objects.pending(older_than=tx_not_mined_alert * 60) for tx in txs: logger.error('Tx with tx-hash=%s and safe-tx-hash=%s has not been mined after a while, created=%s', tx.ethereum_tx_id, tx.safe_tx_hash, tx.created) number_txs += 1 except LockError: pass return number_txs
Example #10
Source File: lock.py From Flask with Apache License 2.0 | 6 votes |
def do_extend(self, additional_time): pipe = self.redis.pipeline() pipe.watch(self.name) lock_value = pipe.get(self.name) if lock_value != self.local.token: raise LockError("Cannot extend a lock that's no longer owned") expiration = pipe.pttl(self.name) if expiration is None or expiration < 0: # Redis evicted the lock key between the previous get() and now # we'll handle this when we call pexpire() expiration = 0 pipe.multi() pipe.pexpire(self.name, expiration + int(additional_time * 1000)) try: response = pipe.execute() except WatchError: # someone else acquired the lock raise LockError("Cannot extend a lock that's no longer owned") if not response[0]: # pexpire returns False if the key doesn't exist raise LockError("Cannot extend a lock that's no longer owned") return True
Example #11
Source File: tasks.py From safe-relay-service with MIT License | 6 votes |
def deploy_create2_safe_task(self, safe_address: str, retry: bool = True) -> None: """ Check if user has sent enough ether or tokens to the safe account If every condition is met safe is deployed :param safe_address: safe account :param retry: if True, retries are allowed, otherwise don't retry """ assert check_checksum(safe_address) redis = RedisRepository().redis lock_name = f'locks:deploy_create2_safe:{safe_address}' try: with redis.lock(lock_name, blocking_timeout=1, timeout=LOCK_TIMEOUT): try: SafeCreationServiceProvider().deploy_create2_safe_tx(safe_address) except NotEnoughFundingForCreation: if retry: raise self.retry(countdown=30) except LockError: logger.warning('Cannot get lock={} for deploying safe={}'.format(lock_name, safe_address))
Example #12
Source File: lock.py From Flask with Apache License 2.0 | 5 votes |
def release(self): "Releases the already acquired lock" expected_token = self.local.token if expected_token is None: raise LockError("Cannot release an unlocked lock") self.local.token = None self.do_release(expected_token)
Example #13
Source File: locks.py From micromasters with BSD 3-Clause "New" or "Revised" License | 5 votes |
def release(self): """ Release the lock """ if self.acquired: try: self.lock.release() except LockError: pass # expected if we don't own the lock anymore finally: self.acquired = False
Example #14
Source File: lock.py From Flask with Apache License 2.0 | 5 votes |
def do_release(self, expected_token): name = self.name def execute_release(pipe): lock_value = pipe.get(name) if lock_value != expected_token: raise LockError("Cannot release a lock that's no longer owned") pipe.delete(name) self.redis.transaction(execute_release, name)
Example #15
Source File: lock.py From learn_python3_spider with MIT License | 5 votes |
def extend(self, additional_time): """ Adds more time to an already acquired lock. ``additional_time`` can be specified as an integer or a float, both representing the number of seconds to add. """ if self.local.token is None: raise LockError("Cannot extend an unlocked lock") if self.timeout is None: raise LockError("Cannot extend a lock with no timeout") return self.do_extend(additional_time)
Example #16
Source File: redis_utils.py From CTFd-Whale with MIT License | 5 votes |
def release_lock(self): if self.lock is None: return False try: self.lock.release() return True except LockError: return False
Example #17
Source File: lock.py From revsync with MIT License | 5 votes |
def do_release(self, expected_token): if not bool(self.lua_release(keys=[self.name], args=[expected_token], client=self.redis)): raise LockError("Cannot release a lock that's no longer owned")
Example #18
Source File: lock.py From Flask with Apache License 2.0 | 5 votes |
def extend(self, additional_time): """ Adds more time to an already acquired lock. ``additional_time`` can be specified as an integer or a float, both representing the number of seconds to add. """ if self.local.token is None: raise LockError("Cannot extend an unlocked lock") if self.timeout is None: raise LockError("Cannot extend a lock with no timeout") return self.do_extend(additional_time)
Example #19
Source File: lock.py From revsync with MIT License | 5 votes |
def extend(self, additional_time): """ Adds more time to an already acquired lock. ``additional_time`` can be specified as an integer or a float, both representing the number of seconds to add. """ if self.local.token is None: raise LockError("Cannot extend an unlocked lock") if self.timeout is None: raise LockError("Cannot extend a lock with no timeout") return self.do_extend(additional_time)
Example #20
Source File: lock.py From revsync with MIT License | 5 votes |
def do_release(self, expected_token): name = self.name def execute_release(pipe): lock_value = pipe.get(name) if lock_value != expected_token: raise LockError("Cannot release a lock that's no longer owned") pipe.delete(name) self.redis.transaction(execute_release, name)
Example #21
Source File: lock.py From revsync with MIT License | 5 votes |
def release(self): "Releases the already acquired lock" expected_token = self.local.token if expected_token is None: raise LockError("Cannot release an unlocked lock") self.local.token = None self.do_release(expected_token)
Example #22
Source File: lock.py From scalyr-agent-2 with Apache License 2.0 | 5 votes |
def do_release(self, expected_token): if not bool(self.lua_release(keys=[self.name], args=[expected_token], client=self.redis)): raise LockError("Cannot release a lock that's no longer owned")
Example #23
Source File: lock.py From Flask with Apache License 2.0 | 5 votes |
def do_release(self, expected_token): if not bool(self.lua_release(keys=[self.name], args=[expected_token], client=self.redis)): raise LockError("Cannot release a lock that's no longer owned")
Example #24
Source File: lock.py From scalyr-agent-2 with Apache License 2.0 | 5 votes |
def extend(self, additional_time): """ Adds more time to an already acquired lock. ``additional_time`` can be specified as an integer or a float, both representing the number of seconds to add. """ if self.local.token is None: raise LockError("Cannot extend an unlocked lock") if self.timeout is None: raise LockError("Cannot extend a lock with no timeout") return self.do_extend(additional_time)
Example #25
Source File: lock.py From scalyr-agent-2 with Apache License 2.0 | 5 votes |
def do_release(self, expected_token): name = self.name def execute_release(pipe): lock_value = pipe.get(name) if lock_value != expected_token: raise LockError("Cannot release a lock that's no longer owned") pipe.delete(name) self.redis.transaction(execute_release, name)
Example #26
Source File: lock.py From scalyr-agent-2 with Apache License 2.0 | 5 votes |
def release(self): "Releases the already acquired lock" expected_token = self.local.token if expected_token is None: raise LockError("Cannot release an unlocked lock") self.local.token = None self.do_release(expected_token)
Example #27
Source File: lock.py From learn_python3_spider with MIT License | 5 votes |
def reacquire(self): """ Resets a TTL of an already acquired lock back to a timeout value. """ if self.local.token is None: raise LockError("Cannot reacquire an unlocked lock") if self.timeout is None: raise LockError("Cannot reacquire a lock with no timeout") return self.do_reacquire()
Example #28
Source File: lock.py From learn_python3_spider with MIT License | 5 votes |
def release(self): "Releases the already acquired lock" expected_token = self.local.token if expected_token is None: raise LockError("Cannot release an unlocked lock") self.local.token = None self.do_release(expected_token)
Example #29
Source File: lock.py From learn_python3_spider with MIT License | 5 votes |
def __enter__(self): # force blocking, as otherwise the user would have to check whether # the lock was actually acquired or not. if self.acquire(blocking=True): return self raise LockError("Unable to acquire lock within the time specified")
Example #30
Source File: lock.py From gimel with MIT License | 5 votes |
def do_release(self, expected_token): if not bool(self.lua_release(keys=[self.name], args=[expected_token], client=self.redis)): raise LockError("Cannot release a lock that's no longer owned")