---
title: "Cron в Go: фоновые и периодические задачи на robfig/cron"
description: "Курс по cron в Go: robfig/cron v3, синтаксис выражений, пояса, wrappers, конкурентность и graceful shutdown. 25 уроков с примерами и проектом."
url: "https://golangmaster.ru/courses/cron/"
published: "2026-09-19"
updated: "2026-09-21"
level: "практика"
lessons: 25
hours: 9
---

# Cron в Go: фоновые и периодические задачи на robfig/cron

*практика · ~9 часов · 25 уроков. Обновлено 21.09.2026. Источник: https://golangmaster.ru/courses/cron/*

У каждого сервиса рано или поздно появляется работа «по расписанию»: ночной отчёт, чистка сессий, напоминания, синхронизация с внешним API. В Go за это отвечает robfig/cron — де-факто стандартный планировщик с синтаксисом классического cron: пять полей, секунды по желанию, часовые пояса из коробки.

Курс ведёт от первого тика до боевого планировщика: выражения и спецсимволы, задачи-функции и задачи-структуры, Start и Stop, контекст и отмена, перекрытие запусков и wrappers Recover, DelayIfStillRunning, SkipIfStillRunning. Отдельные уроки — про то, чего в учебниках нет: конкурентность задач, утечки горутин, логирование и метрики, корректный shutdown и блокировки при нескольких инстансах.

Планировщик и его задачи — обычный Go-код, значительная часть которого runnable в браузерной песочнице: эмуляция времени, состояния и очередей задач выполняется на интерпретаторе клиента, а связка с системным cron — локально.

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

- Собирать планировщик на robfig/cron v3 и запускать задачи по расписанию
- Читать и писать cron-выражения: пять полей, спецсимволы, @daily
- Управлять жизненным циклом: Start, Stop, Entry, Remove
- Держать часовые пояса и секундные расписания под контролем
- Оберегать задачи: Recover, DelayIfStillRunning, SkipIfStillRunning
- Останавливать планировщик без обрыва задач и без утечек горутин
- Наблюдать за задачами: логи, метрики, распределённые блокировки

## Кому подойдёт

- Бэкенд-разработчикам, которым нужны задачи по расписанию в сервисе
- Тем, кто до сих пор зовёт функции из внешнего crontab
- Разработчикам ботов, отчётов и интеграций с периодическими работами

## Что нужно знать заранее

- Базовый синтаксис Go: функции, горутины, контекст (курс «Go с нуля»)
- Знакомство с time.Duration и горутинами из курса по продвинутому Go

## Программа курса

01. **Знакомство с cron: фоновые задачи в Go** — Что такое задача по расписанию и где живёт планировщик.
02. **Установка robfig/cron и первый планировщик** — go get, cron.New, AddFunc, Start: первый тик.
03. **Синтаксис cron-выражений: пять полей** — Минуты, часы, дни: читаем и пишем выражения.
04. **Спецсимволы: звёздочка, слэш, диапазоны и @daily** — */5, 1-10, запятые и дескрипторы @hourly и @daily.
05. **AddFunc: задачи на функциях** — Замыкания, параметры, что нельзя делать в AddFunc.
06. **AddJob: задачи-структуры и интерфейс Job** — Метод Run, зависимости через поля, тестирование задач.
07. **Часовые пояса: Timezone и локальное время** — cron.New с Location, задачи в другом городе, DST.
08. **Секунды: cron.NewWithSeconds** — Шестипольный формат, когда секунды нужны и опасны.
09. **Start, Stop и жизненный цикл планировщика** — Start асинхронен, Stop ждёт задач, Entry.ID.
10. **Контекст в задачах: отмена и дедлайны** — Передаём контекст, отменяем долгие операции.
11. **Долгие задачи: перекрытие запусков** — Что происходит, если задача не уложилась в интервал.
12. **Горутины и конкурентность задач** — Каждый тик — горутина: гонки, мьютексы, очереди.
13. **Инспекция расписания: Entries и Remove** — Entry.ID, список задач, удаление на лету.
14. **Хранение расписания: конфиг и база** — Выражения из YAML и таблицы задач.
15. **Динамическое расписание: добавление на лету** — Добавление и замена задач без рестарта сервиса.
16. **Wrappers: Recover, DelayIfStillRunning, Skip** — Цепочки обёрток, паники и повторные входы.
17. **Логирование задач: zap и slog рядом** — Структурные логи запусков, ошибок и длительности.
18. **Метрики задач: длительность и ошибки** — CounterVec по статусам, Histogram длительности.
19. **Graceful shutdown планировщика** — Сигналы, Stop с дедлайном, дожим задач.
20. **Утечки горутин в задачах** — Забытые тикеры, зависшие воркеры, detect по метрике.
21. **Несколько инстансов: блокировки задач** — Redis-замки, лидерство, идемпотентность задач.
22. **Тестирование задач без ожидания** — Вызов Run напрямую, фейковое расписание, время под контролем.
23. **Ошибки в задачах: ретраи и алерты** — Экспоненциальные повторы, журнал ошибок, эскалация.
24. **cron против time.Ticker и NewTimer** — Когда хватает тикера, а когда нужен планировщик.
25. **Итоговый проект: планировщик отчётов** — Ночные отчёты, очистка, напоминания: полный сервис задач.

## Вопросы и ответы по курсу

### Чем robfig/cron лучше системного crontab?

Системный cron запускает процесс целиком и не знает о вашем приложении. robfig/cron живёт внутри программы: задачи делят с сервисом конфиги, БД и graceful shutdown, а расписание можно менять на лету.

### Почему cron v3, а не v1?

В v3 появились секунды по запросу, часовые пояса, цепочки wrappers и инспекция задач Entry. Курс учит версии v3 — она обратно несовместима с v1 в мелочах, и это стоит знать при чтении старых статей.

### Код запускается в браузерной песочнице?

Большинство задач курса — обычные функции, и они runnable в браузере: интерпретатор эмулирует время и состояние. Уроки про сигналы и системное окружение выполняются локально, интерфейс урока всегда это помечает.
