Infraestructura · 6 min

Cron + pg_net: automatización nocturna desde PostgreSQL

Tu base de datos puede ser el scheduler. Así se configura.

Carlos Copisrad · 13 mayo 2026

pg_cron: el cron dentro de Postgres

pg_cron es una extensión que permite ejecutar queries SQL en un schedule definido por expresiones cron, directamente dentro de PostgreSQL. En Supabase está disponible en todos los planes Pro y superiores.

Combinación con pg_net

La combinación pg_cron + pg_net permite orquestar flujos completos desde SQL:

-- Ejecutar todos los días a las 3am UTC
SELECT cron.schedule(
  'reporte-nocturno',
  '0 3 * * *',
  $$
    SELECT net.http_post(
      url := 'https://n8n.copisrad.cloud/webhook/reporte-diario',
      headers := jsonb_build_object(
        'Content-Type', 'application/json',
        'x-audit-token', current_setting('app.webhook_token')
      ),
      body := jsonb_build_object(
        'fecha', NOW()::DATE,
        'tipo', 'reporte_diario'
      )
    );
  $$
);

Gestionar jobs existentes

-- Ver todos los cron jobs
SELECT * FROM cron.job;

-- Desactivar un job
SELECT cron.unschedule('reporte-nocturno');

-- Ver historial de ejecuciones
SELECT * FROM cron.job_run_details 
WHERE jobid = (SELECT jobid FROM cron.job WHERE jobname = 'reporte-nocturno')
ORDER BY start_time DESC LIMIT 20;

Casos de uso prácticos

  • Sincronización nocturna con ERP o CRM externos
  • Generación y envío de reportes por email
  • Limpieza de datos temporales y archivos de auditoría
  • Actualización de métricas agregadas para dashboards
  • Backup de tablas críticas a storage externo

Monitoreo

Agregar a cada flujo nocturno un registro en una tabla ejecuciones_cron con el resultado. Configurar una alerta si no hay registro de ejecución exitosa en las últimas 26 horas.

¿Querés implementar esto en tu empresa? Escribinos. Diagnóstico de 30 minutos sin compromiso.