Skip to main content

Async distributed locks and concurrency control for Redis

Project description

redislock

Async библиотека для distributed locks и concurrency control через Redis.

Возможности

  • Distributed Locks: Блокировки через Redis для координации между процессами/серверами
  • Concurrency Limiting: Ограничение количества одновременных операций
  • Registry Pattern: Удобное управление через register() и get()
  • Async/Await: Полная поддержка asyncio
  • Context Managers: Автоматическое освобождение ресурсов

Установка

poetry add redislock --path /Users/aleks/Libraryies/redislock

Использование

Инициализация

import red_mng
from redislock import register, get

# Регистрация
redis = red_mng.get("default")
register("default", redis)

# Получение
locks = get("default")

Distributed Locks

# Защита критической секции
async with locks.acquire("orderbook:BTCUSDT:binance"):
    # Только один процесс выполнит этот код
    await update_orderbook()

# С кастомными таймаутами
async with locks.acquire("resource", timeout=10, blocking_timeout=20):
    await critical_operation()

Concurrency Limiting

# Ограничение параллельных API запросов
async with locks.limiter("api_calls", limit=50):
    await make_api_call()

# Ограничение обновлений orderbook
async with locks.limiter("orderbook_updates", limit=100):
    await update_orderbook()

Интеграция с проектом

from redislock import get
from config_fastapi import Config
import red_mng as redis_manager

class BaseRedisControl:
    def __init__(self):
        config = Config(section="redis")
        self.redis = redis_manager.get(config.get("alias"))
        self.locks = get(config.get("alias"))

Архитектура

  • DistributedLock: Использует redis.asyncio.lock.Lock
  • ConcurrencyLimiter: Использует asyncio.Semaphore
  • LockManager: Unified interface для обоих
  • Registry pattern: Singleton per alias

Преимущества

✅ Работает в распределенной среде (несколько серверов) ✅ Автоматическое освобождение блокировок ✅ Настраиваемые таймауты ✅ Логирование через logging ✅ Type hints ✅ Минимальные зависимости

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

redis_distlock-1.0.0.tar.gz (4.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

redis_distlock-1.0.0-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

Details for the file redis_distlock-1.0.0.tar.gz.

File metadata

  • Download URL: redis_distlock-1.0.0.tar.gz
  • Upload date:
  • Size: 4.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.1 CPython/3.13.12 Darwin/25.4.0

File hashes

Hashes for redis_distlock-1.0.0.tar.gz
Algorithm Hash digest
SHA256 699061efc7f6473f3a5a00cf636bbb216f667e0e6ae1fd5f69d3959a2e59d59e
MD5 72bf76aad7f1b1fe948ee4ea4bb48d9d
BLAKE2b-256 b538ac0a827cba4c3cfeaeba805870502fa7e9424d141cdee9e8bef7a3a89d42

See more details on using hashes here.

File details

Details for the file redis_distlock-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: redis_distlock-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 7.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.1 CPython/3.13.12 Darwin/25.4.0

File hashes

Hashes for redis_distlock-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9ab5509e8337479e72a97631e82642a87f97fc6a2e02097b67ebee1fd9b4e030
MD5 c0bad9439f580692aad11384271e1546
BLAKE2b-256 7c3401ffa0c3d1d67dd807701864550eea7f5206b49c30a7d4177a57f309ee97

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page