Перейти к содержимому
ГоМастер

Поиск по урокам

Найдите урок, курс, термин или раздел

Asynq ~11 часов 25 уроковпрактика

Asynq: полный курс по фоновым задачам в Go

Письма, отчёты, картинки, вебхуки — всё, что дольше 100 мс, не должно выполняться в HTTP-хендлере. Asynq — библиотека от хостинга Birdie на Redis: простые типизированные задачи, ретраи, приоритеты, периодика и готовый веб-интерфейс.

Проходим библиотеку целиком: клиент и сервер, payload и task ID, отложенные и периодические задачи, политики ретраев, несколько очередей с весами, группы и агрегация, таймауты и дедлайны, уникальность, Inspector, graceful shutdown и тесты. Каждый урок — код с построчным разбором, интерактив и реальные грабли продакшена.

Чему научитесь

Чему научитесь

  • Строить клиент и воркер asynq и подключать Redis
  • Отправлять отложенные, периодические и уникальные задачи
  • Настраивать ретраи, таймауты и приоритеты очередей
  • Мониторить задачи через Inspector и asynqmon
  • Писать идемпотентные обработчики и плавно останавливать воркеры
  • Тестировать задачи без ожидания реального времени

Для кого курс

  • Backend-разработчикам, которым нужны фоновые процессы
  • Тем, кто перерос cron и горутины с каналами
  • Командам, мигрирующим с самописных очередей на Redis

Что понадобится

  • Базовый синтаксис Go: функции, ошибки, контекст
  • Желательно курс go-redis — Redis встретимся на старте

Программа курса: 25 уроков

  1. 1Знакомство: почему не HTTP-хендлерПисьма, отчёты, вебхуки: что уходит в фон и почему.~16 мин · asynq golang, фоновые задачи go
  2. 2Установка: клиент, воркер и Redisgo get, asynq.NewClient, NewServer, redis opt.~18 мин · asynq установка, asynq redis подключение
  3. 3Первая задача: отправить письмоТип задачи, payload, клиент Enqueue и хендлер ProcessTask.~20 мин · asynq первая задача, asynq processtask
  4. 4Payload и task ID: данные задачиjson.Marshal, MaxRetry, Queue, собственные ID.~18 мин · asynq payload, task id asynq
  5. 5Отложенные задачи: ProcessIn и ProcessAtНапоминания через час, отчёт в полночь.~18 мин · asynq processin, отложенные задачи redis
  6. 6Ретраи: сколько раз и с каким интерваломDefaultRetryDelay, экспонента, 25 попыток по умолчанию.~18 мин · asynq retry, повторы задач go
  7. 7Несколько очередей и приоритетыcritical/default/low: вес против строгого порядка.~20 мин · asynq очереди, приоритеты задач go
  8. 8ServeMux: маршрутизация задачPattern по типу задачи, middleware для задач.~16 мин · asynq servemux, маршрутизация задач
  9. 9Периодические задачи по cronNewPeriodicTaskManager, cron-выражения, идемпотентность.~20 мин · asynq периодические задачи, asynq cron
  10. Группы и агрегация задачготовитсяСбор писем в пачку: Group, Aggregator, GracePeriod.~20 мин · asynq группы, агрегация задач go
  11. 11Таймауты и дедлайн задачиTimeout, Deadline: сколько живёт задача.~16 мин · asynq timeout, дедлайн задач go
  12. 12Уникальные задачи: UniqueНе слать дважды: TTL уникальности и гонки.~18 мин · asynq unique, уникальные задачи go
  13. 13Своя политика ретраевRetryLater, кастомный интервал, отступление от экспоненты.~18 мин · asynq retrydelay, свои повторы go
  14. 14Ошибки: SkipRetry и FatalКогда задача не должна повторяться, ошибки против ретрая.~18 мин · asynq skipretry, ошибки задач go
  15. 15Inspector: мониторинг из кодаQueueStats, списки задач, отмена и запуск вручную.~20 мин · asynq inspector, мониторинг очереди
  16. 16Asynqmon: веб-интерфейс очередейDocker-дашборд: что смотреть, когда лаги.~16 мин · asynqmon ui, asynq дашборд
  17. 17Контекст и зависимости в хендлерахБаза, кэш, конфиг: как передать в хендлер.~18 мин · asynq контекст, зависимости хендлера
  18. 18Идемпотентность обработчиковЗадача может повториться: проектируем дважды безопасно.~20 мин · идемпотентность задач, asynq идемпотентность
  19. 19Плавная остановка воркеровSIGTERM, Run против StartAndListen, дожим задач.~18 мин · asynq graceful shutdown, остановка воркеров
  20. 20Конкурентность и масштабированиеConcurrency, несколько воркеров, разделение очередей.~20 мин · asynq concurrency, масштабирование воркеров
  21. 21Фоновые задачи в веб-приложенииAPI отправляет, воркер делает: полная связка.~20 мин · asynq web приложение, очередь в api go
  22. 22Тестирование обработчиковХендлер как функция, фейковый Redis, фиксированное время.~18 мин · тесты asynq, тесты задач go
  23. 23Логи и метрики задачЧто логировать, счётчики успешных и повторных.~18 мин · asynq метрики, логи очереди go
  24. 24Грабли продакшена: от утечек до дубликатовЗабытый Redis, длинные задачи, взрыв ретраев.~18 мин · asynq грабли, очереди продакшен go
  25. 25Итоговый проект: система рассылокОтложенные письма, агрегация, ретраи, дашборд.~24 мин · asynq проект, рассылка go очередь

Вопросы о курсе

Чем asynq лучше самописной очереди на каналах?

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

Нужен Redis для прохождения?

Нет: весь код разбирается в браузере с реалистичными сценариями. Для практики локально — Docker с одной командой из второго урока.

Подойдёт ли для микросервисов?

Да: задачи и обработчики разделены, клиент может жить в API-сервисе, воркеры — в отдельном. Отдельный урок показывает эту топологию.