Распределённая очередь задач для Python: выполняет фоновые задания и распределяет работу между воркерами через брокеры сообщений.
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
Установите Go и убедитесь, что сервер Redis (версии 4.0 или выше) запущен
- 2
Установите библиотеку Asynq в модуль Go
go get -u github.com/hibiken/asynq - 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 обновляется ежедневно.
Похожие проекты
Движок оркестрации фоновых задач, AI-агентов и долговечных рабочих процессов с SDK для Python, TypeScript, Go и Ruby и Postgres в качестве слоя надёжного хранения.
Надёжный движок workflow для запуска пошаговых функций, фоновых задач и AI-workflow на serverless-платформах, серверах и edge-инфраструктуре — с повторами и управлением потоком выполнения.
Temporal — платформа надёжного выполнения, сервер которой запускает рабочие процессы приложения и автоматически повторяет неудачные операции.
Rust-сервисы и библиотеки, лежащие в основе чата Stoat: REST API, WebSocket-сервер событий и файловый сервер.
Универсальный open-source-бэкенд на TypeScript со встроенными real-time-уведомлениями, хранением данных с расширенным поиском и управлением пользователями.