Я делаю нечто подобное, где я кеширую некоторые результаты API и обновляю кеш каждые несколько секунд.Я не использую ничего кроме стандартной библиотеки, хотя.Вот пример кода.
func UpdateCache() {
var lock sync.Mutex
timer1 := time.NewTicker(time.Second * 10)
defer timer1.Stop()
timer2 := time.NewTicker(time.Second * 5)
defer timer2.Stop()
for {
/* run forever */
select {
case <-timer1.C:
go func() {
lock.Lock()
defer lock.Unlock()
/* do things I need done every 10 seconds */
}()
case <-timer2.C:
go func() {
lock.Lock()
defer lock.Unlock()
/* do things I need done every 5 seconds */
}()
}
}
}
И в main () у меня есть
go UpdateCache()
router := gin.Default()
/* setup all the routes */
listen := os.Getenv("SERVICE_ADDR")
router.Run(listen)
Я думаю, что проблема, с которой вы сталкиваетесь, заключается в том, что вы начинаете запускать маршруты в маршрутах.Init (), и он блокируется и никогда не попадает в настройку вашего cron.