Библиотека robfig/cron
Планируйте задачи с синтаксисом cron
«Библиотека robfig/cron» — бесплатный урок Go Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Go Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Go Academy содержит 4 уроков всего.
Выражения cron в Go
Библиотека robfig/cron позволяет планировать задания с помощью привычного синтаксиса cron вместо написания вычислений времени вручную. Установите её с помощью go get github.com/robfig/cron/v3.
import "github.com/robfig/cron/v3"Повторение синтаксиса cron
Стандартное выражение cron содержит пять полей:
- минута (0–59)
- час (0–23)
- день месяца (1–31)
- месяц (1–12)
- день недели (0–6)
Пример: 0 9 * * 1-5 = 9:00 AM по будним дням.
Создание планировщика
cron.New() возвращает планировщик. Добавьте задания, а затем запустите его.
c := cron.New()
c.Start()
defer c.Stop()Добавление задания
AddFunc регистрирует функцию для запуска по расписанию и возвращает ID записи и ошибку, если спецификация недействительна.
id, err := c.AddFunc("30 * * * *", func() {
fmt.Println("runs at minute 30")
})
if err != nil {
log.Fatal(err)
}
_ = idПоле секунд
По умолчанию robfig/cron v3 использует спецификацию из 5 полей, без секунд. Чтобы включить спецификацию из 6 полей с секундами, создайте cron с параметром секунд.
c := cron.New(cron.WithSeconds())
c.AddFunc("*/5 * * * * *", func() { fmt.Println("every 5s") })Предопределённые расписания
Доступны удобные макросы:
@hourly@daily@weekly@every 1h30m
c.AddFunc("@every 1h30m", func() { fmt.Println("every 90 min") })
c.AddFunc("@daily", func() { fmt.Println("midnight") })Удаление заданий
Используйте возвращённый идентификатор EntryID, чтобы динамически удалить задание.
id, _ := c.AddFunc("@hourly", task)
// later:
c.Remove(id)Задания выполняются в горутинах
Каждое запланированное задание выполняется в собственной горутине. Если задание может пересекаться со следующим запуском, защитите его от параллельного выполнения или используйте оболочку, пропускающую пересекающиеся запуски.
Часовые пояса
По умолчанию расписания используют местное время компьютера. Передайте часовой пояс, чтобы явно задать его и избежать неожиданных эффектов, связанных с переходом на летнее время.
loc, _ := time.LoadLocation("America/New_York")
c := cron.New(cron.WithLocation(loc))Разбор без запуска
С помощью анализатора можно проверить спецификацию или вычислить следующий запуск. Это особенно удобно для тестов и показа пользователям времени следующего выполнения.
sched, _ := cron.ParseStandard("0 9 * * 1-5")
next := sched.Next(time.Now())
fmt.Println("next run:", next)Готовый к запуску пример: вычисление следующего запуска планировщика (аналогия)
Библиотека robfig/cron является внешней; этот фрагмент стандартной библиотеки моделирует простейшее правило планировщика: «каждую минуту в начале минуты», вычисляя следующее подходящее время.
package main
import (
"fmt"
"time"
)
func nextRun(from time.Time) time.Time {
return from.Truncate(time.Minute).Add(time.Minute)
}
func main() {
now := time.Date(2026, 1, 1, 8, 15, 30, 0, time.UTC)
fmt.Println("now:", now.Format("15:04:05"))
fmt.Println("next:", nextRun(now).Format("15:04:05"))
}Проверка знаний
Проверьте, насколько хорошо Вы поняли библиотеку robfig/cron.
Итоги
Вы изучили библиотеку robfig/cron:
cron.New()+AddFunc(spec, fn)+Start()- По умолчанию спецификация содержит 5 полей;
WithSecondsдобавляет поле секунд - Макросы, такие как
@dailyи@every, упрощают распространённые расписания - Используйте
Remove, часовые пояса иParseStandardдля управления и тестирования
Часто задаваемые вопросы
Урок «Библиотека robfig/cron» бесплатный?
Да — полный текст урока «Библиотека robfig/cron» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Go Academy, подпишись на CoddyKit PRO. Курс Go Academy содержит 4 уроков всего.
Чему я научусь в уроке «Библиотека robfig/cron»?
Планируйте задачи с синтаксисом cron Ты практикуешь Go Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Go Academy?
Предыдущий опыт не требуется. Go Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Библиотека robfig/cron»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Go Academy?
Да. Каждый урок Go Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Планирование по времени
- Библиотека robfig/cron
- Тикеры для интервалов
- Корректное завершение задач