Repolode
hibiken

hibiken/asynq

Biblioteca de Go para colas de tareas distribuidas con Redis, con programación, reintentos, colas prioritarias y una interfaz web.

Estrellas
13,784
Forks
991
Issues abiertos
293
Último commit
hace 3 días

¿Qué es?

Asynq es una biblioteca de Go para poner tareas en colas y procesarlas de forma asíncrona mediante goroutines de worker. Los clientes encolan tareas en Redis y uno o varios servidores worker las extraen y ejecutan de forma concurrente, lo que permite distribuir el trabajo entre varias máquinas.

La biblioteca cubre necesidades habituales de los trabajos en segundo plano: tareas programadas y periódicas, reintentos de tareas fallidas, recuperación de tareas tras la caída de un worker, colas con prioridades ponderadas y estrictas, deduplicación mediante una opción de unicidad, tiempos de espera y plazos por tarea, y agrupación de tareas en lotes. Los handlers pueden ser funciones simples o tipos que implementen una interfaz, y se admite middleware.

Las herramientas de operaciones incluyen métricas de Prometheus, compatibilidad con Redis Sentinel para alta disponibilidad, una interfaz web independiente llamada Asynqmon para inspeccionar y controlar colas y tareas, y una herramienta de línea de comandos llamada asynq. Se requiere Redis 4.0 o superior, y es posible que algunos scripts de Lua no funcionen con Redis Cluster.

Funciones clave

  • 01Ejecución programada, periódica y diferida de tareas
  • 02Reintentos automáticos y recuperación de tareas tras caídas de workers
  • 03Colas con prioridades ponderadas y estrictas
  • 04Deduplicación de tareas, tiempos de espera y plazos
  • 05Agrupación de tareas para procesar en lotes operaciones sucesivas
  • 06Métricas de Prometheus, compatibilidad con Redis Sentinel, interfaz web y CLI

Casos de uso

  • Enviar correos electrónicos o notificaciones en segundo plano sin bloquear las solicitudes HTTP
  • Cambiar el tamaño de imágenes o procesar archivos subidos en máquinas worker independientes
  • Ejecutar tareas periódicas, como limpieza o generación de informes, en un servicio de Go
  • Distribuir cargas de trabajo pesadas entre varios servidores usando Redis como broker

Inicio rápido

  1. 1

    Instala Go y asegúrate de que haya un servidor Redis (versión 4.0 o superior) en ejecución

  2. 2

    Instala la biblioteca Asynq en tu módulo de Go

    go get -u github.com/hibiken/asynq
  3. 3

    Escribe un paquete de tareas; después, encola las tareas con un Client y procésalas con un Server

Antes de usarlo

  • Requiere un servidor Redis (versión 4.0 o superior) para almacenar y mover tareas.
  • Aún está en la versión v0.x, por lo que la API pública puede cambiar sin un incremento de la versión principal antes de la v1.0.0.
  • Es posible que algunos scripts de Lua no sean compatibles con Redis Cluster.

Temas

Preguntas frecuentes

¿Qué es asynq?
Biblioteca de Go para colas de tareas distribuidas con Redis, con programación, reintentos, colas prioritarias y una interfaz web. Asynq es una biblioteca de Go para poner tareas en colas y procesarlas de forma asíncrona mediante goroutines de worker. Los clientes encolan tareas en Redis y uno o varios servidores worker las extraen y ejecutan de forma concurrente, lo que permite distribuir el trabajo entre varias máquinas.
¿asynq es gratuito? ¿Qué licencia tiene?
asynq es open source bajo la licencia MIT. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿asynq sigue mantenido?
Mantenimiento activo. El último commit de asynq fue el 19 oct 2026.
¿Para qué puedo usar asynq?
Enviar correos electrónicos o notificaciones en segundo plano sin bloquear las solicitudes HTTP Cambiar el tamaño de imágenes o procesar archivos subidos en máquinas worker independientes Ejecutar tareas periódicas, como limpieza o generación de informes, en un servicio de Go Distribuir cargas de trabajo pesadas entre varios servidores usando Redis como broker
¿Cómo se instala asynq?
Instala Go y asegúrate de que haya un servidor Redis (versión 4.0 o superior) en ejecución Instala la biblioteca Asynq en tu módulo de Go: go get -u github.com/hibiken/asynq Escribe un paquete de tareas; después, encola las tareas con un Client y procésalas con un Server
¿Dónde consigo asynq?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/hibiken/asynq

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados