Gocron: пакет планирования заданий Golang

Gocron-это пакет планирования заданий, который позволяет выполнять функции GO с заранее определенными интервалами.
Если вы хотите пообщаться, вы можете найти нас в Slack At
Быстрый старт
go get github.com/go-co-op/gocron/v2
package main
import (
"fmt"
"time"
"github.com/go-co-op/gocron/v2"
)
func main () {
// create a scheduler
s , err := gocron . NewScheduler ()
if err != nil {
// handle error
}
// add a job to the scheduler
j , err := s . NewJob (
gocron . DurationJob (
10 * time . Second ,
),
gocron . NewTask (
func ( a string , b int ) {
// do things
},
"hello" ,
1 ,
),
)
if err != nil {
// handle error
}
// each job has a unique id
fmt . Println ( j . ID ())
// start the scheduler
s . Start ()
// block until you are ready to shut down
select {
case <- time . After ( time . Minute ):
}
// when you're done, shut it down
err = s . Shutdown ()
if err != nil {
// handle error
}
}Примеры
- Go Doc Примеры
- Примеры каталога
Концепции
- Работа : задание инкапсулирует «задачу», которая состоит из функции GO и любых параметров функции. Затем задание предоставляет планировщику время, когда задание должно быть запланировано для запуска.
- Планировщик : Планировщик отслеживает все задания и отправляет каждое задание исполнителю, когда он будет готов к запуску.
- Исполнитель : Исполнитель вызывает задачу задания и управляет сложностями различных требований к выполнению задания (например, одинокие.
Функции
Типы работы
Работа может работать с различными интервалами.
- Продолжительность : задания можно работать в фиксированное
time.Duration . - Случайная продолжительность : задания можно работать в случайное
time.Duration Продолжительность между минем и максимум. - Cron : задания можно работать с помощью Crontab.
- Ежедневно : рабочие места могут выполняться каждые X дней в определенное время.
- Еженедельно : Работа может выполняться каждые X недель в определенные дни недели и в определенное время.
- Ежемесячно : рабочие места могут выполняться каждые X месяцев в определенные дни месяца и в определенное время.
- Один раз : задания могут выполняться в определенное время (ы) (один раз или много раз).
Ограничения параллелистики
Работы могут быть ограничены индивидуально или по всему планировщику.
- В соответствии с работой, ограничивающим режима Singleton : задания может быть ограничено одним параллельным выполнением, которое либо воспроизводит (пропускает перекрывающиеся выполнения), либо очередью (ожидает завершения предыдущего выполнения).
- Перионер, ограничивающий предельный режим : задания может быть ограничено определенным количеством одновременных выполнений по всему планированию, используя либо перенесен (пропустите, когда ограничение соблюдается) или очередь (задания добавляются в очередь, чтобы дождаться доступного лимита).
- Примечание: ограничение планировщика и ограничение задания могут быть включены.
Распределенные случаи гокрона
Можно запустить несколько случаев Gocron.
- Избиратель : избиратель может быть использован для избрания одного экземпляра Gocron для работы в качестве основного с другими случаями, проверяющими, нужно ли избрать нового лидера.
- Реализации: go-co-op Electors (не видите, что вам нужно? Запрос на Slack, чтобы создать репо, чтобы внести свой вклад!)
- Шкафчик : шкафчик может использоваться для блокировки каждого запуска задания в один экземпляр Gocron. Locker может быть на работе или планировщику, если он определяется как на работе, так и на планировщике, то Lecker of Job будет иметь приоритет.
- Реализации: go-co-op-шкафчики (не видите, что вам нужно? Запрос на Slack, чтобы создать репо, чтобы внести его вклад!)
События
Рабочие события могут вызвать действия.
- Слушатели : могут быть добавлены на работу, со слушателями событий или всеми заданиями по всему планировщику, чтобы выслушать события работы и запустить действия.
Параметры
Многие варианты работы и планировщика доступны.
- Параметры задания : Параметры задания могут быть установлены при создании работы с использованием
NewJob . - Глобальные варианты работы : глобальные варианты работы могут быть установлены при создании планировщика с использованием
NewScheduler и опции WithGlobalJobOptions . - Параметры планировщика : Параметры планировщика могут быть установлены при создании планировщика с использованием
NewScheduler .
Регистрация
Журналы могут быть включены.
- Logger: Интерфейс Logger может быть реализован с помощью вашей желаемой библиотеки журнала. Предоставленный Newlogger использует стандартный пакет журналов библиотеки.
Метрики
Метрики могут быть собраны из выполнения каждой работы.
- Мониторинг :
- MonitorStatus (включает в себя статус и ошибку (если есть) задания) Монитор может использоваться для сбора метрик для каждого задания с планировщика.
- Реализации: мониторы GO-CO-OP (не видите, что вам нужно? Запрос на Slack, чтобы создать репо, чтобы внести свой вклад!)
Тестирование
Библиотека Gocron настроена на тестирование.
- Макеты предусмотрены в макете с использованием GoMock.
- Время можно высмеивать, передавая в Fakeclock, чтобы выпустить - см. Пример на Showclock.
Сторонники
Мы ценим поддержку бесплатного и программного обеспечения с открытым исходным кодом!
Этот проект поддерживается:
Спеля
Часовой
Звездная история