Доброго дня!
Коллеги, можете что-либо посоветовать по поводу того, как правильно организовать постоянно работающе приложение?
Есть функция, котора выполняет запрос POST и сохраняет результат. Нужно сделать так, чтобы выполнялась постоянно (каждые столько-то секунд).
На данный момент я сделал так:
type MyStruct struct {
isEnabled bool
//...
}
func (m *MyStruct) GetData() {...} // однократное получение данных
func (m *MyStruct) Start(){
m.isEnabled = true
go func(m *MyStruct){
for m.isEnabled {
m.GetData()
// ...
time.Sleep(time.Duration(500) * time.Millisecond)
}
}(m)
}
func (m *MyStruct) Stop() {
m.isEnabled = false
}
Я хочу, чтобы в main.go я написал m.Start(), и стартовала рутина работать, пока в main.go далее где-то не встретится m.Stop(), или вообще работала всегда, если m.Stop() не встретился.
Однако, если мы запишем просто m.Start(), он выключется, не дождавшись завершения рутины. А писать вейтгруппу и запуск m.GetData в рутине в main.go - как-то некрасиво.