diff options
Diffstat (limited to 'scheduler')
-rw-r--r-- | scheduler/doc.go | 10 | ||||
-rw-r--r-- | scheduler/scheduler.go | 44 | ||||
-rw-r--r-- | scheduler/worker.go | 36 | ||||
-rw-r--r-- | scheduler/worker_pool.go | 36 |
4 files changed, 0 insertions, 126 deletions
diff --git a/scheduler/doc.go b/scheduler/doc.go deleted file mode 100644 index 74a6f20..0000000 --- a/scheduler/doc.go +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2018 Frédéric Guillot. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -/* - -Package scheduler implements the application internal scheduler. - -*/ -package scheduler // import "miniflux.app/scheduler" diff --git a/scheduler/scheduler.go b/scheduler/scheduler.go deleted file mode 100644 index f0a8134..0000000 --- a/scheduler/scheduler.go +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2017 Frédéric Guillot. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package scheduler // import "miniflux.app/scheduler" - -import ( - "time" - - "miniflux.app/logger" - "miniflux.app/storage" -) - -// NewFeedScheduler starts a new scheduler that push jobs to a pool of workers. -func NewFeedScheduler(store *storage.Storage, workerPool *WorkerPool, frequency, batchSize int) { - go func() { - c := time.Tick(time.Duration(frequency) * time.Minute) - for range c { - jobs, err := store.NewBatch(batchSize) - if err != nil { - logger.Error("[FeedScheduler] %v", err) - } else { - logger.Debug("[FeedScheduler] Pushing %d jobs", len(jobs)) - workerPool.Push(jobs) - } - } - }() -} - -// NewCleanupScheduler starts a new scheduler that clean old sessions and archive read items. -func NewCleanupScheduler(store *storage.Storage, frequency int) { - go func() { - c := time.Tick(time.Duration(frequency) * time.Hour) - for range c { - nbSessions := store.CleanOldSessions() - nbUserSessions := store.CleanOldUserSessions() - logger.Info("[CleanupScheduler] Cleaned %d sessions and %d user sessions", nbSessions, nbUserSessions) - - if err := store.ArchiveEntries(); err != nil { - logger.Error("[CleanupScheduler] %v", err) - } - } - }() -} diff --git a/scheduler/worker.go b/scheduler/worker.go deleted file mode 100644 index 68efed7..0000000 --- a/scheduler/worker.go +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2017 Frédéric Guillot. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package scheduler // import "miniflux.app/scheduler" - -import ( - "time" - - "miniflux.app/logger" - "miniflux.app/model" - "miniflux.app/reader/feed" -) - -// Worker refreshes a feed in the background. -type Worker struct { - id int - feedHandler *feed.Handler -} - -// Run wait for a job and refresh the given feed. -func (w *Worker) Run(c chan model.Job) { - logger.Info("[Worker] #%d started", w.id) - - for { - job := <-c - logger.Debug("[Worker #%d] got userID=%d, feedID=%d", w.id, job.UserID, job.FeedID) - - err := w.feedHandler.RefreshFeed(job.UserID, job.FeedID) - if err != nil { - logger.Error("[Worker] %v", err) - } - - time.Sleep(time.Millisecond * 1000) - } -} diff --git a/scheduler/worker_pool.go b/scheduler/worker_pool.go deleted file mode 100644 index ce5a453..0000000 --- a/scheduler/worker_pool.go +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2017 Frédéric Guillot. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package scheduler // import "miniflux.app/scheduler" - -import ( - "miniflux.app/model" - "miniflux.app/reader/feed" -) - -// WorkerPool handle a pool of workers. -type WorkerPool struct { - queue chan model.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. -func NewWorkerPool(feedHandler *feed.Handler, nbWorkers int) *WorkerPool { - workerPool := &WorkerPool{ - queue: make(chan model.Job), - } - - for i := 0; i < nbWorkers; i++ { - worker := &Worker{id: i, feedHandler: feedHandler} - go worker.Run(workerPool.queue) - } - - return workerPool -} |