<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Утилиты on PG Whisperer / Магия PostgreSQL</title>
    <link>https://pgwhisperer.ru/tools/</link>
    <description>Recent content in Утилиты on PG Whisperer / Магия PostgreSQL</description>
    <generator>Hugo</generator>
    <language>ru</language>
    <lastBuildDate>Tue, 01 Sep 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://pgwhisperer.ru/tools/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>PG Advisory Lock</title>
      <link>https://pgwhisperer.ru/tools/pg-advisory-lock/</link>
      <pubDate>Tue, 01 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://pgwhisperer.ru/tools/pg-advisory-lock/</guid>
      <description>&lt;h3 id=&#34;pythonic-обёртка-над-advisory-locks-postgresql-для-sqlalchemy-составные-ключи-и-явная-обработка-конкуренции-за-блокировку&#34;&gt;&#xA;  Pythonic-обёртка над advisory locks PostgreSQL для SQLAlchemy: составные ключи и явная обработка конкуренции за блокировку.&#xA;  &lt;a class=&#34;heading-link&#34; href=&#34;#pythonic-%d0%be%d0%b1%d1%91%d1%80%d1%82%d0%ba%d0%b0-%d0%bd%d0%b0%d0%b4-advisory-locks-postgresql-%d0%b4%d0%bb%d1%8f-sqlalchemy-%d1%81%d0%be%d1%81%d1%82%d0%b0%d0%b2%d0%bd%d1%8b%d0%b5-%d0%ba%d0%bb%d1%8e%d1%87%d0%b8-%d0%b8-%d1%8f%d0%b2%d0%bd%d0%b0%d1%8f-%d0%be%d0%b1%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0-%d0%ba%d0%be%d0%bd%d0%ba%d1%83%d1%80%d0%b5%d0%bd%d1%86%d0%b8%d0%b8-%d0%b7%d0%b0-%d0%b1%d0%bb%d0%be%d0%ba%d0%b8%d1%80%d0%be%d0%b2%d0%ba%d1%83&#34;&gt;&#xA;    &lt;i class=&#34;fa-solid fa-link&#34; aria-hidden=&#34;true&#34; title=&#34;Ссылка на заголовок&#34;&gt;&lt;/i&gt;&#xA;    &lt;span class=&#34;sr-only&#34;&gt;Ссылка на заголовок&lt;/span&gt;&#xA;  &lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://pypi.org/project/pg-advisory-lock/&#34;  class=&#34;external-link&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;PyPi&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Предоставляет высокоуровневый интерфейс для работы с advisory locks PostgreSQL:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;составные аргументы блокировки&lt;/li&gt;&#xA;&lt;li&gt;таймауты&lt;/li&gt;&#xA;&lt;li&gt;предсказуемое поведение при конкуренции.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Advisory locks работают на уровне приложения и автоматически освобождаются при завершении транзакции — как при commit, так и при rollback.&lt;/p&gt;&#xA;&lt;p&gt;Основные возможности:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Детерминированные ключи блокировок, составленные из компонентов str, int и uuid.UUID&lt;/li&gt;&#xA;&lt;li&gt;Неблокирующая попытка немедленного захвата блокировки&lt;/li&gt;&#xA;&lt;li&gt;Ожидание блокировки с настраиваемым таймаутом&lt;/li&gt;&#xA;&lt;li&gt;Автоматическое освобождение блокировки при завершении транзакции (используются функции pg_advisory_xact_lock)&lt;/li&gt;&#xA;&lt;li&gt;Настраиваемое поведение при ожидаемой конкуренции за блокировку: исключение (по умолчанию) или boolean-результат&lt;/li&gt;&#xA;&lt;li&gt;Ошибки базы данных и инфраструктуры передаются вызывающему коду без изменений&lt;/li&gt;&#xA;&lt;li&gt;Встроенные type hints, поставляемые вместе с пакетом (PEP 561)&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
  </channel>
</rss>
