changeset 439:124c921ad52d

stats->state to make room for greplin stats Ignore-this: cfa2357bdf06ac3324741700ac44db5c
author drewp@bigasterisk.com
date Mon, 15 Apr 2019 00:17:04 -0700
parents d453cdd8a86f
children 6304b0370491
files lib/patchsource.py service/collector/sse_collector.py
diffstat 2 files changed, 17 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/lib/patchsource.py	Sat Apr 13 20:56:30 2019 -0700
+++ b/lib/patchsource.py	Mon Apr 15 00:17:04 2019 -0700
@@ -41,7 +41,7 @@
             d.addCallback(self._onDisconnect)
         self._eventSource.protocol.setFinishedDeferred = sfd
 
-    def stats(self):
+    def state(self):
         return {
             'url': self.url,
             'fullGraphReceived': self._fullGraphReceived,
@@ -127,9 +127,9 @@
     def _onPatch(self, p, fullGraph):
         self._listener(p, fullGraph=fullGraph)
 
-    def stats(self):
+    def state(self):
         return {
-            'reconnectedPatchSource': self._ps.stats(),
+            'reconnectedPatchSource': self._ps.state(),
         }
         
     def stop(self):
--- a/service/collector/sse_collector.py	Sat Apr 13 20:56:30 2019 -0700
+++ b/service/collector/sse_collector.py	Mon Apr 15 00:17:04 2019 -0700
@@ -86,9 +86,9 @@
         # http://bigasterisk.com/sse_collector/).
         self.statements = collections.defaultdict(lambda: (set(), set())) # (s,p,o,c): (sourceUrls, handlers)`
 
-    def stats(self):
+    def state(self):
         return {
-'len': len(self.statements),
+            'len': len(self.statements),
             }
         
     def _postDeleteStatements(self):
@@ -201,11 +201,11 @@
         
         self._localStatements = LocalStatements(self._onPatch)
 
-    def stats(self):
+    def state(self):
         return {
-            'clients': [ps.stats() for ps in self.clients.values()],
-            'sseHandlers': [h.stats() for h in self.handlers],
-            'statements': self.statements.stats(),
+            'clients': [ps.state() for ps in self.clients.values()],
+            'sseHandlers': [h.state() for h in self.handlers],
+            'statements': self.statements.state(),
         }
 
     def _sourcesForHandler(self, handler):
@@ -307,10 +307,10 @@
     def __repr__(self):
         return '<Handler #%s>' % self._serial
 
-    def stats(self):
+    def state(self):
         return {
-            'created': self.created,
-            'ageHours': (time.time() - self.created) / 3600,
+            'created': round(self.created, 2),
+            'ageHours': round((time.time() - self.created) / 3600, 2),
             'streamId': self.streamId,
             'remoteIp': self.request.remote_ip,
             'userAgent': self.request.headers.get('user-agent'),
@@ -322,22 +322,22 @@
     def unbind(self):
         self.graphClients.removeSseHandler(self)
 
-class Stats(cyclone.web.RequestHandler):
+class State(cyclone.web.RequestHandler):
+    @STATS.getState.time()
     def get(self):
         try:
-            stats = self.settings.graphClients.stats()
+            state = self.settings.graphClients.state()
         except:
             import traceback; traceback.print_exc()
             raise
         
-        self.write(json.dumps({'graphClients': stats}, indent=2))
+        self.write(json.dumps({'graphClients': state}, indent=2))
 
 class Root(cyclone.web.RequestHandler):
     def get(self):
         self.write('<html><body>sse_collector</body></html>')
         
 if __name__ == '__main__':
-
     arg = docopt("""
     Usage: sse_collector.py [options]
 
@@ -357,7 +357,7 @@
         cyclone.web.Application(
             handlers=[
                 (r'/', Root),
-                (r'/stats', Stats),
+                (r'/state', State),
                 (r'/graph/(.*)', SomeGraph),
             ],
             graphClients=graphClients),