# Pgbouncer Asyncpg

> Connection pooling PostgreSQL con PgBouncer y cliente async asyncpg para alto rendimiento

- Skill: `davidcastagnetoa/pgbouncer-asyncpg` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add davidcastagnetoa/pgbouncer-asyncpg`
- Raw SKILL.md: https://api.skillmd.com/api/skills/davidcastagnetoa/pgbouncer-asyncpg/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: davidcastagnetoa (https://skillmd.com/u/davidcastagnetoa)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/davidcastagnetoa/pgbouncer-asyncpg

---


# 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

1. Instalar asyncpg: `pip install asyncpg`.
2. Instalar PgBouncer: disponible en `apt install pgbouncer` o imagen Docker.
3. Configurar PgBouncer en modo transaction pooling (`pool_mode = transaction`).
4. Configurar pool size: `max_client_conn = 1000`, `default_pool_size = 20`.
5. Crear pool de conexiones en FastAPI startup:
   ```python
   pool = await asyncpg.create_pool(dsn=PGBOUNCER_DSN, min_size=5, max_size=20)
   ```
6. Usar el pool en cada operación: `async with pool.acquire() as conn: await conn.fetch(query)`.
7. Health check: verificar que PgBouncer responde y tiene conexiones disponibles.

## Notes

- PgBouncer NO soporta prepared statements en transaction mode; usar `$1, $2` placeholders nativos.
- Patroni gestiona el failover primary/replica de PostgreSQL.
- Alembic para migraciones: `pip install alembic`.
