| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- //"I want to be a cleaner, just like you," said Mathilda
- //"Okay," replied Leon
- package backgroundtasks
- import (
- "context"
- "time"
- "golang.org/x/sync/errgroup"
- "github.com/grafana/grafana/pkg/bus"
- "github.com/grafana/grafana/pkg/log"
- "github.com/grafana/grafana/pkg/models"
- )
- var (
- tlog log.Logger = log.New("ticker")
- )
- func Init(ctx context.Context) error {
- g, _ := errgroup.WithContext(ctx)
- g.Go(func() error { return start(ctx) })
- return g.Wait()
- }
- func start(ctx context.Context) error {
- go cleanup(time.Now())
- ticker := time.NewTicker(time.Hour * 1)
- for {
- select {
- case tick := <-ticker.C:
- go cleanup(tick)
- case <-ctx.Done():
- return ctx.Err()
- }
- }
- }
- func cleanup(now time.Time) {
- err := bus.Publish(&models.HourCommand{Time: now})
- if err != nil {
- tlog.Error("Cleanup job failed", "error", err)
- }
- }
|