37 lines
		
	
	
		
			932 B
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			932 B
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # 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.
 | |
| 
 | |
| 
 | 
