SKILL.md
pgbouncer_asyncpg
PgBouncer en modo transaction pooling reduce el coste de conexiones PostgreSQL de ~10ms a <0.1ms. asyncpg es el cliente async de PostgreSQL más rápido para Python.
When to use
Usar para todas las operaciones de base de datos del sistema. Nunca conectar directamente a PostgreSQL desde los servicios.
Instructions
- Instalar asyncpg:
pip install asyncpg. - Instalar PgBouncer: disponible en
apt install pgbouncero imagen Docker. - Configurar PgBouncer en modo transaction pooling (
pool_mode = transaction). - Configurar pool size:
maxclientconn = 1000,defaultpoolsize = 20. - Crear pool de conexiones en FastAPI startup:
``python pool = await asyncpg.createpool(dsn=PGBOUNCERDSN, minsize=5, maxsize=20) ``
- Usar el pool en cada operación:
async with pool.acquire() as conn: await conn.fetch(query). - Health check: verificar que PgBouncer responde y tiene conexiones disponibles.
Notes
- PgBouncer NO soporta prepared statements en transaction mode; usar
$1, $2placeholders nativos. - Patroni gestiona el failover primary/replica de PostgreSQL.
- Alembic para migraciones:
pip install alembic.