Repolode
hibiken

hibiken/asynq

Biblioteca Go para filas de tarefas distribuídas com Redis, com agendamento, novas tentativas, filas prioritárias e interface web.

Estrelas
13,784
Forks
991
Issues abertas
293
Último commit
há 3 dias

O que é?

Asynq é uma biblioteca Go para colocar tarefas em filas e processá-las de forma assíncrona com goroutines de workers. Os clientes adicionam tarefas ao Redis, e um ou mais servidores de workers as buscam e executam em paralelo, permitindo distribuir o trabalho entre várias máquinas.

A biblioteca atende a necessidades comuns de jobs em segundo plano: tarefas agendadas e periódicas, novas tentativas para tarefas que falharam, recuperação de tarefas após a queda de um worker, filas com prioridade ponderada ou estrita, eliminação de duplicatas com a opção unique, timeouts e prazos por tarefa e agrupamento de tarefas em lotes. Os handlers podem ser funções simples ou tipos que implementam uma interface, e há suporte a middleware.

As ferramentas operacionais incluem métricas do Prometheus, suporte ao Redis Sentinel para alta disponibilidade, uma interface web separada chamada Asynqmon para inspecionar e controlar filas e tarefas, e uma ferramenta de linha de comando chamada asynq. É necessário usar Redis 4.0 ou superior, e alguns scripts Lua podem não funcionar com Redis Cluster.

Recursos principais

  • 01Execução de tarefas agendadas, periódicas e com atraso
  • 02Novas tentativas automáticas e recuperação de tarefas após quedas de workers
  • 03Filas com prioridade ponderada ou estrita
  • 04Eliminação de duplicatas, timeouts e prazos para tarefas
  • 05Agregação de tarefas para agrupar operações sucessivas
  • 06Métricas do Prometheus, suporte ao Redis Sentinel, interface web e CLI

Casos de uso

  • Enviar emails ou notificações em segundo plano sem bloquear requisições HTTP
  • Redimensionar imagens ou processar uploads em máquinas separadas para workers
  • Executar jobs periódicos, como limpeza ou geração de relatórios, em um serviço Go
  • Distribuir cargas de trabalho pesadas entre vários servidores usando o Redis como broker

Início rápido

  1. 1

    Instale o Go e verifique se um servidor Redis (versão 4.0 ou superior) está em execução

  2. 2

    Instale a biblioteca Asynq no seu módulo Go

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

    Escreva um pacote de tarefas e, em seguida, enfileire as tarefas com um Client e processe-as com um Server

Antes de usar

  • Requer um servidor Redis (versão 4.0 ou superior) para armazenar e mover tarefas.
  • Ainda está na versão v0.x, portanto a API pública pode mudar sem um aumento da versão principal antes da v1.0.0.
  • Alguns scripts Lua podem não ser compatíveis com o Redis Cluster.

Tópicos

Perguntas frequentes

O que é asynq?
Biblioteca Go para filas de tarefas distribuídas com Redis, com agendamento, novas tentativas, filas prioritárias e interface web. Asynq é uma biblioteca Go para colocar tarefas em filas e processá-las de forma assíncrona com goroutines de workers. Os clientes adicionam tarefas ao Redis, e um ou mais servidores de workers as buscam e executam em paralelo, permitindo distribuir o trabalho entre várias máquinas.
asynq é gratuito? Qual é a licença?
asynq é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
asynq ainda é mantido?
Manutenção ativa. O último commit de asynq foi em 19 de out. de 2026.
Para que posso usar asynq?
Enviar emails ou notificações em segundo plano sem bloquear requisições HTTP Redimensionar imagens ou processar uploads em máquinas separadas para workers Executar jobs periódicos, como limpeza ou geração de relatórios, em um serviço Go Distribuir cargas de trabalho pesadas entre vários servidores usando o Redis como broker
Como instalar asynq?
Instale o Go e verifique se um servidor Redis (versão 4.0 ou superior) está em execução Instale a biblioteca Asynq no seu módulo Go: go get -u github.com/hibiken/asynq Escreva um pacote de tarefas e, em seguida, enfileire as tarefas com um Client e processe-as com um Server
Onde consigo asynq?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/hibiken/asynq

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados