mirror of
https://github.com/nkanaev/yarr.git
synced 2025-05-25 05:29:20 +00:00
track running status
This commit is contained in:
parent
f3bfd6fb3a
commit
a2c8e30e79
@ -63,7 +63,7 @@ func StaticHandler(rw http.ResponseWriter, req *http.Request) {
|
|||||||
|
|
||||||
func StatusHandler(rw http.ResponseWriter, req *http.Request) {
|
func StatusHandler(rw http.ResponseWriter, req *http.Request) {
|
||||||
writeJSON(rw, map[string]interface{}{
|
writeJSON(rw, map[string]interface{}{
|
||||||
"running": handler(req).queueSize > 0,
|
"running": *handler(req).queueSize > 0,
|
||||||
"stats": db(req).FeedStats(),
|
"stats": db(req).FeedStats(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -438,6 +438,8 @@ func OPMLImportHandler(rw http.ResponseWriter, req *http.Request) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
handler(req).fetchAllFeeds()
|
||||||
|
rw.WriteHeader(http.StatusOK)
|
||||||
} else {
|
} else {
|
||||||
rw.WriteHeader(http.StatusMethodNotAllowed)
|
rw.WriteHeader(http.StatusMethodNotAllowed)
|
||||||
}
|
}
|
||||||
|
@ -14,15 +14,16 @@ type Handler struct {
|
|||||||
db *storage.Storage
|
db *storage.Storage
|
||||||
log *log.Logger
|
log *log.Logger
|
||||||
feedQueue chan storage.Feed
|
feedQueue chan storage.Feed
|
||||||
queueSize int32
|
queueSize *int32
|
||||||
}
|
}
|
||||||
|
|
||||||
func New(db *storage.Storage, logger *log.Logger) *Handler {
|
func New(db *storage.Storage, logger *log.Logger) *Handler {
|
||||||
|
queueSize := int32(0)
|
||||||
return &Handler{
|
return &Handler{
|
||||||
db: db,
|
db: db,
|
||||||
log: logger,
|
log: logger,
|
||||||
feedQueue: make(chan storage.Feed, 1000),
|
feedQueue: make(chan storage.Feed, 1000),
|
||||||
queueSize: 0,
|
queueSize: &queueSize,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -51,7 +52,7 @@ func (h *Handler) startJobs() {
|
|||||||
case feed := <-h.feedQueue:
|
case feed := <-h.feedQueue:
|
||||||
items := listItems(feed)
|
items := listItems(feed)
|
||||||
h.db.CreateItems(items)
|
h.db.CreateItems(items)
|
||||||
atomic.AddInt32(&h.queueSize, -1)
|
atomic.AddInt32(h.queueSize, -1)
|
||||||
case <- delTicker.C:
|
case <- delTicker.C:
|
||||||
h.db.DeleteOldItems()
|
h.db.DeleteOldItems()
|
||||||
}
|
}
|
||||||
@ -77,7 +78,7 @@ func (h *Handler) fetchAllFeeds() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (h *Handler) fetchFeed(feed storage.Feed) {
|
func (h *Handler) fetchFeed(feed storage.Feed) {
|
||||||
atomic.AddInt32(&h.queueSize, 1)
|
atomic.AddInt32(h.queueSize, 1)
|
||||||
h.feedQueue <- feed
|
h.feedQueue <- feed
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -268,6 +268,9 @@ var vm = new Vue({
|
|||||||
methods: {
|
methods: {
|
||||||
refreshStats: function() {
|
refreshStats: function() {
|
||||||
api.status().then(function(data) {
|
api.status().then(function(data) {
|
||||||
|
if (data.running) {
|
||||||
|
setTimeout(vm.refreshStats.bind(vm), 2000)
|
||||||
|
}
|
||||||
vm.feedStats = data.stats.reduce(function(acc, stat) {
|
vm.feedStats = data.stats.reduce(function(acc, stat) {
|
||||||
acc[stat.feed_id] = stat
|
acc[stat.feed_id] = stat
|
||||||
return acc
|
return acc
|
||||||
@ -451,6 +454,7 @@ var vm = new Vue({
|
|||||||
api.upload_opml(form).then(function() {
|
api.upload_opml(form).then(function() {
|
||||||
input.value = ''
|
input.value = ''
|
||||||
vm.refreshFeeds()
|
vm.refreshFeeds()
|
||||||
|
vm.refreshStats()
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
getReadable: function(item) {
|
getReadable: function(item) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user