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.LockConcurrencyLimiter: Используетasyncio.SemaphoreLockManager: Unified interface для обоих- Registry pattern: Singleton per alias
Преимущества
✅ Работает в распределенной среде (несколько серверов)
✅ Автоматическое освобождение блокировок
✅ Настраиваемые таймауты
✅ Логирование через logging
✅ Type hints
✅ Минимальные зависимости
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
699061efc7f6473f3a5a00cf636bbb216f667e0e6ae1fd5f69d3959a2e59d59e
|
|
| MD5 |
72bf76aad7f1b1fe948ee4ea4bb48d9d
|
|
| BLAKE2b-256 |
b538ac0a827cba4c3cfeaeba805870502fa7e9424d141cdee9e8bef7a3a89d42
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ab5509e8337479e72a97631e82642a87f97fc6a2e02097b67ebee1fd9b4e030
|
|
| MD5 |
c0bad9439f580692aad11384271e1546
|
|
| BLAKE2b-256 |
7c3401ffa0c3d1d67dd807701864550eea7f5206b49c30a7d4177a57f309ee97
|