diff options
Diffstat (limited to 'sugar_network/node/stats.py')
-rw-r--r-- | sugar_network/node/stats.py | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/sugar_network/node/stats.py b/sugar_network/node/stats.py index c31b204..d5941eb 100644 --- a/sugar_network/node/stats.py +++ b/sugar_network/node/stats.py @@ -23,10 +23,6 @@ from sugar_network.toolkit.coroutine import this from sugar_network.toolkit import Option, coroutine, enforce -stats = Option( - 'collect unpersonalized node statistics', - default=False, type_cast=Option.bool_cast, action='store_true') - stats_step = Option( 'step interval in seconds for RRD statistics database', default=60 * 5, type_cast=int) @@ -110,6 +106,7 @@ class StatRoutes(object): _rrd = None _stats = None + _solves = None _stated = False def stats_init(self, path, step, rras): @@ -117,6 +114,7 @@ class StatRoutes(object): self._rrd = Rrd(path, 'stats', _DS, step, rras) self._stats = self._rrd.values() + self._solves = {} if not self._stats: for field, traits in _DS.items(): @@ -142,6 +140,9 @@ class StatRoutes(object): stat = stat() self._stats[stat] += shift + if stat == 'solved': + self._solves[r.guid] = self._solves.get(r.guid, 0) + 1 + return result @route('GET', cmd='stats', arguments={ @@ -188,6 +189,11 @@ class StatRoutes(object): if traits['type'] == 'ABSOLUTE': self._stats[field] = 0 + context = this.volume['context'] + for guid, solves in self._solves.items(): + context.update(guid, {'solves': context[guid]['solves'] + solves}) + self._solves.clear() + def stats_regen(self, path, step, rras): for i in Rrd(path, 'stats', _DS, step, rras).files: os.unlink(i) |