#go
#Вперед
Вопрос:
Я хочу выполнять функцию с использованием этой библиотеки crontab https://github.com/robfig/cron
каждый день в 12: 05 вечера. Это мой текущий код :
cronHandler.AddFunc("@midnight", func() {
fmt.Println("crontab ping")
}
Как я могу выполнять свою функцию с помощью crontab каждый день в 03: 00 утра, часовой пояс 2? Моя проблема в том, что текущая функция использует часовой пояс моего сервера, и вторая проблема, с которой эта библиотека не позволяет указывать конкретный час при выполнении. Как я могу это сделать?
Комментарии:
1. В документации точно объясняется, как выполнить функцию в указанное время: godoc.org/github.com/robfig/cron
Ответ №1:
Это можно сделать с помощью библиотеки cron вместе с несколькими незначительными изменениями в вашем коде.
Несколько вещей:
- Найдите выбранный вами часовой пояс, найдя его в списке из базы данных часовых поясов, т.Е. здесь
- Загрузите этот часовой пояс в
time.LoadLocation
или используйтеtime.FixedZone
метод, если.LoadLocation
метод у вас не работает, обратитесь к time docs для получения дополнительной информации о доступных методах - Инициализируйте новый экземпляр программы выполнения заданий Cron, используя метод пользовательского расположения
NewWithLocation
, смотрите документы здесь - Отредактируйте свой первый аргумент в
.AddFunc
методе, чтобы добавить более детализированное расписание cron, заменив общее@midnight
на более конкретное,5 0 * * * *
представляющее каждый день с 12:05 утра, или замените любым желаемым временем выполнения cron в новом пользовательском местоположении
Полный пример ниже:
// pass in your specific zone name, using USA/LA as example
customLocation := time.LoadLocation("America/Los_Angeles")
// initialize new cron job runner with custom location
cronHandler := cron.NewWithLocation(customLocation)
// the 0/24th hour and 5th minute of every day
cronHandler.AddFunc("5 0 * * * *", func() {
fmt.Println("crontab ping")
})
Комментарии:
1.
0 5 * * * *
выполняется каждые 5 часов утра дня, а не так, как вы комментируете в коде.