diff options
author | Frédéric Guillot <fred@miniflux.net> | 2017-11-21 22:36:00 -0800 |
---|---|---|
committer | Frédéric Guillot <fred@miniflux.net> | 2017-11-21 22:36:00 -0800 |
commit | 855fb06bc93a628108990013813725996a090c17 (patch) | |
tree | 9b250ce620818089c4a630787c580da8bc47ebe1 /scheduler | |
parent | 480b0d94e2f67e96285ff9265f4c1c81d3c0392d (diff) |
Add feature to refresh all feeds from the user interface
Diffstat (limited to 'scheduler')
-rw-r--r-- | scheduler/scheduler.go | 24 | ||||
-rw-r--r-- | scheduler/worker_pool.go | 8 |
2 files changed, 19 insertions, 13 deletions
diff --git a/scheduler/scheduler.go b/scheduler/scheduler.go index ab87e99..acfb401 100644 --- a/scheduler/scheduler.go +++ b/scheduler/scheduler.go @@ -5,20 +5,24 @@ package scheduler import ( - "github.com/miniflux/miniflux2/storage" "log" "time" + + "github.com/miniflux/miniflux2/storage" ) -// NewScheduler starts a new scheduler to push jobs to a pool of workers. +// NewScheduler starts a new scheduler that push jobs to a pool of workers. func NewScheduler(store *storage.Storage, workerPool *WorkerPool, frequency, batchSize int) { - c := time.Tick(time.Duration(frequency) * time.Minute) - for now := range c { - jobs := store.GetJobs(batchSize) - log.Printf("[Scheduler:%v] => Pushing %d jobs\n", now, len(jobs)) - - for _, job := range jobs { - workerPool.Push(job) + go func() { + c := time.Tick(time.Duration(frequency) * time.Minute) + for now := range c { + jobs, err := store.NewBatch(batchSize) + if err != nil { + log.Println("[Scheduler]", err) + } else { + log.Printf("[Scheduler:%v] => Pushing %d jobs\n", now, len(jobs)) + workerPool.Push(jobs) + } } - } + }() } diff --git a/scheduler/worker_pool.go b/scheduler/worker_pool.go index b753f89..c4a8372 100644 --- a/scheduler/worker_pool.go +++ b/scheduler/worker_pool.go @@ -14,9 +14,11 @@ type WorkerPool struct { queue chan model.Job } -// Push send a job on the queue. -func (w *WorkerPool) Push(job model.Job) { - w.queue <- job +// Push send a list of jobs to the queue. +func (w *WorkerPool) Push(jobs model.JobList) { + for _, job := range jobs { + w.queue <- job + } } // NewWorkerPool creates a pool of background workers. |