Голанг crontab выполняет функцию каждый день в полночь - PullRequest
0 голосов
/ 04 марта 2019

Я хочу выполнять функцию, используя эту библиотеку crontab https://github.com/robfig/cron каждый день в 12:05.Это мой текущий код:

cronHandler.AddFunc("@midnight", func() {
fmt.Println("crontab ping")
}

Как я могу выполнять свою функцию, используя crontab каждый день в 03:00, часовой пояс +2?Моя проблема заключается в том, что текущая функция использует часовой пояс моего сервера, и вторая проблема - эта библиотека не позволяет указать конкретный час при выполнении.Как я могу это сделать?

1 Ответ

0 голосов
/ 05 марта 2019

Это можно сделать с помощью библиотеки cron вместе с небольшими изменениями в вашем коде.

Несколько вещей:

  1. Найдите часовой поясвыберите его в списке из базы данных часовых поясов, например, здесь
  2. Загрузите этот часовой пояс в time.LoadLocation или используйте метод time.FixedZone, если метод .LoadLocation не работаетсм. временные документы для получения дополнительной информации о доступных методах
  3. Инициализируйте новый экземпляр обработчика заданий Cron, используя пользовательский метод определения местоположения NewWithLocation, см. документы здесь.
  4. Измените свой первый аргумент на метод .AddFunc, чтобы добавить более детальное расписание cron, заменив универсальный @midnight более конкретным 0 5 * * * *, представляющим каждый день @ 12:05 AM или замените его на любое другое желаемое время выполнения 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("0 5 * * * *", func() {
    fmt.Println("crontab ping")
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...