PG Advisory Lock
Pythonic-обёртка над advisory locks PostgreSQL для SQLAlchemy: составные ключи и явная обработка конкуренции за блокировку. Ссылка на заголовок
PyPi.
Предоставляет высокоуровневый интерфейс для работы с advisory locks PostgreSQL:
- составные аргументы блокировки
- таймауты
- предсказуемое поведение при конкуренции.
Advisory locks работают на уровне приложения и автоматически освобождаются при завершении транзакции — как при commit, так и при rollback.
Основные возможности:
- Детерминированные ключи блокировок, составленные из компонентов str, int и uuid.UUID
- Неблокирующая попытка немедленного захвата блокировки
- Ожидание блокировки с настраиваемым таймаутом
- Автоматическое освобождение блокировки при завершении транзакции (используются функции pg_advisory_xact_lock)
- Настраиваемое поведение при ожидаемой конкуренции за блокировку: исключение (по умолчанию) или boolean-результат
- Ошибки базы данных и инфраструктуры передаются вызывающему коду без изменений
- Встроенные type hints, поставляемые вместе с пакетом (PEP 561)