{"library":"redlock-py","title":"redlock-py","description":"redlock-py is a Python library that implements the Redis-based distributed lock manager algorithm (Redlock). It provides a mechanism for acquiring and releasing distributed locks across multiple independent Redis instances to ensure mutual exclusion in a distributed system. The library is currently at version 1.0.8, with a relatively low release cadence, as its PyPI project description was last updated in 2016 and the linked GitHub repository in 2021, suggesting a maintenance-level status.","language":"python","status":"active","last_verified":"Fri May 15","install":{"commands":["pip install redlock-py redis"],"cli":null},"imports":["from redlock import Redlock"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom redlock import Redlock\nimport redis\n\n# Configure Redis connection(s)\n# For a true Redlock setup, use multiple independent Redis instances.\n# For quickstart, a single local instance is shown.\nREDIS_HOST = os.environ.get('REDIS_HOST', 'localhost')\nREDIS_PORT = int(os.environ.get('REDIS_PORT', 6379))\nREDIS_DB = int(os.environ.get('REDIS_DB', 0))\n\nredis_nodes = [\n    {\"host\": REDIS_HOST, \"port\": REDIS_PORT, \"db\": REDIS_DB}\n    # For production, add more independent Redis nodes, e.g.:\n    # {\"host\": \"redis2.example.com\", \"port\": 6379, \"db\": 0},\n    # {\"host\": \"redis3.example.com\", \"port\": 6379, \"db\": 0},\n]\n\n# Initialize the Redlock manager\ndlm = Redlock(redis_nodes)\n\nresource_name = \"my_critical_resource\"\nlock_validity_time_ms = 5000 # Lock will be valid for 5 seconds\n\ntry:\n    # Acquire the lock using a context manager (recommended)\n    print(f\"Attempting to acquire lock for '{resource_name}'...\")\n    with dlm.lock(resource_name, lock_validity_time_ms) as my_lock:\n        if my_lock:\n            print(f\"Lock '{resource_name}' acquired! (Validity: {my_lock.validity}ms)\")\n            # Your critical section code goes here\n            print(\"Executing critical section...\")\n            # Simulate work\n            import time\n            time.sleep(2)\n            print(\"Critical section complete.\")\n        else:\n            print(f\"Could not acquire lock for '{resource_name}'. Another process may hold it.\")\nexcept redis.exceptions.ConnectionError as e:\n    print(f\"Error connecting to Redis: {e}. Make sure Redis is running.\")\nexcept Exception as e:\n    print(f\"An unexpected error occurred: {e}\")\n\nprint(\"Finished redlock-py quickstart example.\")","lang":"python","description":"This quickstart demonstrates how to acquire and release a distributed lock using `redlock-py` with a context manager. It initializes the Redlock manager with Redis connection details and attempts to lock a resource. For a robust Redlock implementation, it's crucial to configure multiple independent Redis instances; the example uses a single instance for simplicity.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-15","installed_version":"1.0.8","pypi_latest":"1.0.8","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":2.7,"avg_import_s":0.4,"wheel_type":"sdist"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"redlock-py","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.29,"mem_mb":10.3,"disk_size":"23.0M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"redlock-py","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2.3,"import_time_s":0.21,"mem_mb":10.3,"disk_size":"24M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"redlock-py","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.41,"mem_mb":11.9,"disk_size":"26.1M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"redlock-py","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2.3,"import_time_s":0.36,"mem_mb":11.9,"disk_size":"27M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"redlock-py","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.59,"mem_mb":11.9,"disk_size":"15.9M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"redlock-py","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":3.3,"import_time_s":0.56,"mem_mb":11.9,"disk_size":"16M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"redlock-py","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.57,"mem_mb":12.1,"disk_size":"15.6M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"redlock-py","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":3,"import_time_s":0.55,"mem_mb":12.1,"disk_size":"16M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"redlock-py","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.26,"mem_mb":9.7,"disk_size":"22.0M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"redlock-py","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2.6,"import_time_s":0.24,"mem_mb":9.7,"disk_size":"23M"}]}}