# cycle-scheduler cycle-scheduler is a simple scheduler lib, handling tasks and executes them at regular interval. If a task is not in desired state, the task is re-scheduled. **NOTE**: this should be not used for long-running tasks, it's more suitable for shorts tasks like polling etc... ## Examples * Init a new scheduler with 4 workers ```go import ( "context" scheduler "gitea.thegux.fr/rmanach/cycle-scheduler.git" ) ctx := context.Background() s := scheduler.NewSchedulerCycle(ctx, 4) // add a task with an execution interval of 2 ms (executed every 2 ms) // and a maximum duration of 30 second. taskID := s.Delay( func(ctx context.Context) (any, error) { // ... return any, nil }, scheduler.WithExecInterval(2*time.Millisecond), scheduler.WithMaxDuration(30*time.Second) ) <-ctx.Done() <-s.Done() ``` **NOTE**: for `Delay` optionals arguments, check the `NewTask` method documentation for more details.