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.1.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.1-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: redis_distlock-1.0.1.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.1.tar.gz
Algorithm Hash digest
SHA256 08a48af6b4e1267a7fabcadb48a535a77dac926dec2b4ba3ff82e1fc59244c20
MD5 f8f9dc4c551776105d211ff3785e597f
BLAKE2b-256 5e5700b044c801189fc476e833dcf92b6c9c3effbb2227a96f7f61897c26b6aa

See more details on using hashes here.

File details

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

File metadata

  • Download URL: redis_distlock-1.0.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b90631e380dc2c8ec74f87713f7c148748cc4c296eb49624be6b0a28dbfee20d
MD5 f19203f6cd26eee938f60a5204b1858d
BLAKE2b-256 4498c8de4e52a36c1ad7d5673afcdec1ef940be1af39fb26df821534aa70445b

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