
Security News
MCP Community Begins Work on Official MCP Metaregistry
The MCP community is launching an official registry to standardize AI tool discovery and let agents dynamically find and install MCP servers.
redis-extending-lock
Advanced tools
Lock that prolongs itself from time to time and cancels current task if used as async context manager.
.. image:: https://coveralls.io/repos/github/alvassin/redis-extending-lock/badge.svg?branch=master :target: https://coveralls.io/github/alvassin/redis-extending-lock?branch=master :alt: Coveralls
.. image:: https://github.com/alvassin/redis-extending-lock/workflows/tests/badge.svg :target: https://github.com/alvassin/redis-extending-lock/actions?query=workflow%3Atests+branch%3Amaster :alt: Actions
.. image:: https://img.shields.io/pypi/v/redis-extending-lock.svg :target: https://pypi.python.org/pypi/redis-extending-lock.svg/ :alt: Latest Version
.. image:: https://img.shields.io/pypi/wheel/redis-extending-lock.svg :target: https://pypi.python.org/pypi/redis-extending-lock/
.. image:: https://img.shields.io/pypi/pyversions/redis-extending-lock.svg :target: https://pypi.python.org/pypi/redis-extending-lock/
.. image:: https://img.shields.io/pypi/l/redis-extending-lock.svg :target: https://pypi.python.org/pypi/redis-extending-lock/
Usage
.. code-block:: python
import asyncio
import logging
from redis.asyncio import Redis
from redis_extending_lock import ExtendingLock
async def main():
redis = Redis.from_url('redis://:hackme@localhost:6379/0')
lock = ExtendingLock(
redis, 'example',
timeout=2,
# optional, if not specified explicitly
# would be half of timeout
extend_interval=1,
blocking_timeout=0,
)
async with lock:
# your long-running task,
# would be cancelled if lock would be not able to extend
# for some reason
await asyncio.Future()
logging.basicConfig(level=logging.DEBUG)
asyncio.run(main())
Lock can be also used without context manager:
.. code-block:: python
import asyncio
import logging
from redis.asyncio import Redis
from redis_extending_lock import ExtendingLock
async def main():
redis = Redis.from_url('redis://:hackme@localhost:6379/0')
lock = ExtendingLock(
redis, 'example', timeout=2, blocking_timeout=0,
)
await lock.acquire()
await asyncio.sleep(5)
await lock.release()
logging.basicConfig(level=logging.DEBUG)
asyncio.run(main())
How to develop
make devenv
- configure the development environmentpoetry shell
or source .venv/bin/activate
- activate virtualenvmake lint
- syntax & code style checkmake codestyle
- reformat codemake test
- test this projectmake build
- build this projectVersioning
This software follows `Semantic Versioning`_.
Version is represented using MAJOR.MINOR.PATCH numbers, increment the:
* MAJOR version when you make incompatible API changes
* MINOR version when you add functionality in a backwards compatible manner
* PATCH version when you make backwards compatible bug fixes
* Additional labels for pre-release and build metadata are available as
extensions to the MAJOR.MINOR.PATCH format.
In this case, the package version is assigned automatically with poem-plugins_,
it using on the tag in the repository as a major and minor and the counter,
which takes the number of commits between tag to the head of branch.
.. _Semantic Versioning: http://semver.org/
.. _poem-plugins: https://pypi.org/project/poem-plugins
FAQs
Reacquiring lock for redis
We found that redis-extending-lock demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
The MCP community is launching an official registry to standardize AI tool discovery and let agents dynamically find and install MCP servers.
Research
Security News
Socket uncovers an npm Trojan stealing crypto wallets and BullX credentials via obfuscated code and Telegram exfiltration.
Research
Security News
Malicious npm packages posing as developer tools target macOS Cursor IDE users, stealing credentials and modifying files to gain persistent backdoor access.