Repolode
hibiken

hibiken/asynq

Библиотека Go для распределённых очередей задач на базе Redis с планированием, повторами, приоритетами и веб-интерфейсом.

Звёзды
13,784
Форки
991
Открытые issues
293
Последний коммит
3 дня назад

Что это?

Asynq — библиотека Go для постановки задач в очереди и их асинхронной обработки рабочими горутинами. Клиенты помещают задачи в Redis, а один или несколько серверов-воркеров извлекают их и выполняют параллельно, распределяя работу между несколькими машинами.

Библиотека охватывает основные потребности фоновой обработки: запланированные и периодические задачи, повторные попытки для неудачных задач, восстановление задач после сбоя воркера, очереди с весовыми и строгими приоритетами, дедупликацию с помощью параметра unique, таймауты и сроки выполнения для отдельных задач, а также объединение задач в пакеты. Обработчики могут быть обычными функциями или типами, реализующими интерфейс; также поддерживается middleware.

Инструменты для эксплуатации включают метрики Prometheus, поддержку Redis Sentinel для обеспечения высокой доступности, отдельный веб-интерфейс Asynqmon для просмотра очередей и задач и управления ими, а также CLI-инструмент asynq. Требуется Redis версии 4.0 или выше; некоторые Lua-скрипты могут не работать с Redis Cluster.

Ключевые возможности

  • 01Запланированное, периодическое и отложенное выполнение задач
  • 02Автоматические повторы и восстановление задач после сбоев воркеров
  • 03Очереди с весовыми и строгими приоритетами
  • 04Дедупликация задач, таймауты и сроки выполнения
  • 05Объединение задач для пакетной обработки последовательных операций
  • 06Метрики Prometheus, поддержка Redis Sentinel, веб-интерфейс и CLI

Сценарии использования

  • Отправка писем и уведомлений в фоне, не блокируя HTTP-запросы
  • Изменение размера изображений и обработка загруженных файлов на отдельных машинах с воркерами
  • Запуск периодических задач, например очистки данных или формирования отчётов, в сервисе на Go
  • Распределение ресурсоёмких задач между несколькими серверами с Redis в роли брокера

Быстрый старт

  1. 1

    Установите Go и убедитесь, что сервер Redis (версии 4.0 или выше) запущен

  2. 2

    Установите библиотеку Asynq в модуль Go

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

    Создайте пакет задач, затем ставьте задачи в очередь с помощью Client и обрабатывайте их с помощью Server

Что важно знать

  • Для хранения и перемещения задач требуется сервер Redis (версии 4.0 или выше).
  • Проект пока находится на стадии v0.x, поэтому до выхода v1.0.0 публичный API может измениться без повышения основной версии.
  • Некоторые скрипты Lua могут быть несовместимы с Redis Cluster.

Темы

Частые вопросы

Что такое asynq?
Библиотека Go для распределённых очередей задач на базе Redis с планированием, повторами, приоритетами и веб-интерфейсом. Asynq — библиотека Go для постановки задач в очереди и их асинхронной обработки рабочими горутинами. Клиенты помещают задачи в Redis, а один или несколько серверов-воркеров извлекают их и выполняют параллельно, распределяя работу между несколькими машинами.
asynq можно использовать бесплатно? Какая у него лицензия?
asynq распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
asynq всё ещё поддерживается?
Активно поддерживается. Последний коммит в asynq — 19 окт. 2026 г..
Для чего можно использовать asynq?
Отправка писем и уведомлений в фоне, не блокируя HTTP-запросы Изменение размера изображений и обработка загруженных файлов на отдельных машинах с воркерами Запуск периодических задач, например очистки данных или формирования отчётов, в сервисе на Go Распределение ресурсоёмких задач между несколькими серверами с Redis в роли брокера
Как установить asynq?
Установите Go и убедитесь, что сервер Redis (версии 4.0 или выше) запущен Установите библиотеку Asynq в модуль Go: go get -u github.com/hibiken/asynq Создайте пакет задач, затем ставьте задачи в очередь с помощью Client и обрабатывайте их с помощью Server
Где скачать asynq?
Исходный код и инструкции по установке — на GitHub: https://github.com/hibiken/asynq

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты