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)