reter

module
v1.0.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 11, 2022 License: MIT

README

Reter - task scheduler with synchronization over etcd

Tests

Installation
go get github.com/skvoch/reter
Algorithm
  1. Checking the time since the last action
  2. If the difference between time.Now() and last action time less than interval - skipping
  3. Locking and calling a handler function
  4. Updating last action time, and unlocking
Example
s, err := scheduler.New(zerologadapter.NewLogger(log.Logger), &scheduler.Options{
		Etcd: scheduler.EtcdOptions{
			Endpoints: []string{"127.0.0.1:2379"},
		},
		LockTTL: time.Minute * 1,
		Timeout: time.Second * 10,
})
	
if err != nil {
	log.Fatal().Err(err).Msg("failed to connect to etcd")
}

g, ctx := errgroup.WithContext(context.Background())

g.Go(func() error {
	return s.Every(30).Seconds().Do(ctx, "seconds", func() {
		fmt.Println("print every 10 second")
	})
})

g.Go(func() error {
	return s.Every().Interval(time.Second*3).Do(ctx, "interval", func() {
		fmt.Println("print every 3 second")
	})
})
Logging

Package contains several adapters for the most popular loggers:

  • go-kit
  • log15
  • logrus
  • zap
  • zerolog

Directories

Path Synopsis
builder/mock
Package mock_builder is a generated GoMock package.
Package mock_builder is a generated GoMock package.
logger/log15adapter
Package log15adapter provides a logger that writes to a github.com/inconshreveable/log15.Logger log.
Package log15adapter provides a logger that writes to a github.com/inconshreveable/log15.Logger log.
logger/logrusadapter
Package logrusadapter provides a logger that writes to a github.com/sirupsen/logrus.Logger log.
Package logrusadapter provides a logger that writes to a github.com/sirupsen/logrus.Logger log.
logger/zapadapter
Package zapadapter provides a logger that writes to a go.uber.org/zap.Logger.
Package zapadapter provides a logger that writes to a go.uber.org/zap.Logger.
logger/zerologadapter
Package zerologadapter provides a logger that writes to a github.com/rs/zerolog.
Package zerologadapter provides a logger that writes to a github.com/rs/zerolog.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL