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
✅ Минимальные зависимости
Metadata
Release files for redis-distlock 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| redis_distlock-1.0.1.tar.gz | 4.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| redis_distlock-1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 12.9 kB
Release files / redis_distlock-1.0.1.tar.gz
| Download URL | redis_distlock-1.0.1.tar.gz |
|---|---|
| Size | 4.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
08a48af6b4e1267a7fabcadb48a535a77dac926dec2b4ba3ff82e1fc59244c20
|
|
BLAKE2b-256 checksum How to use checksums |
5e5700b044c801189fc476e833dcf92b6c9c3effbb2227a96f7f61897c26b6aa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.1.1 CPython/3.13.12 Darwin/25.4.0
|
Release files / redis_distlock-1.0.1-py3-none-any.whl
| Download URL | redis_distlock-1.0.1-py3-none-any.whl |
|---|---|
| Size | 7.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b90631e380dc2c8ec74f87713f7c148748cc4c296eb49624be6b0a28dbfee20d
|
|
BLAKE2b-256 checksum How to use checksums |
4498c8de4e52a36c1ad7d5673afcdec1ef940be1af39fb26df821534aa70445b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.1.1 CPython/3.13.12 Darwin/25.4.0
|