changeset 1564:ffbebd7902ee

stats page Ignore-this: b59d958287c2381c908ec9583706966 darcs-hash:97af26702e35e41ae4a1e01cb3287cb17878dead
author drewp <drewp@bigasterisk.com>
date Fri, 14 Feb 2020 16:47:10 -0800
parents 71eec31da919
children ce5ea31e3605
files service/rdf_to_mqtt/rdf_to_mqtt.py
diffstat 1 files changed, 13 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/service/rdf_to_mqtt/rdf_to_mqtt.py	Fri Feb 14 10:21:24 2020 -0800
+++ b/service/rdf_to_mqtt/rdf_to_mqtt.py	Fri Feb 14 16:47:10 2020 -0800
@@ -7,17 +7,24 @@
 import json
 from mqtt_client import MqttClient
 from docopt import docopt
-from rdflib import Namespace, Literal
+from rdflib import Namespace
 from twisted.internet import reactor
 import cyclone.web
+from greplin import scales
+from greplin.scales.cyclonehandler import StatsHandler
 
-from patchablegraph import PatchableGraph, CycloneGraphHandler, CycloneGraphEventsHandler
 from standardservice.logsetup import log, verboseLogging
 import rdf_over_http
 from cycloneerr import PrettyErrorHandler
 
 ROOM = Namespace('http://projects.bigasterisk.com/room/')
 
+STATS = scales.collection('/root',
+                          scales.PmfStat('putRequests'),
+                          scales.PmfStat('statement'),
+                          scales.PmfStat('mqttPublish'),
+)
+
 devs = {
     ROOM['kitchenLight']: {
         'root': 'h801_skylight',
@@ -63,6 +70,7 @@
 
 
 class OutputPage(PrettyErrorHandler, cyclone.web.RequestHandler):
+    @STATS.putRequests.time()
     def put(self):
         for stmt in rdf_over_http.rdfStatementsFromRequest(
                 self.request.arguments,
@@ -70,6 +78,7 @@
                 self.request.headers):
             self._onStatement(stmt)
 
+    @STATS.statement.time()
     def _onStatement(self, stmt):
         log.info(f'incoming statement: {stmt}')
         ignored = True
@@ -126,6 +135,7 @@
                     stmt[2].toPython())
         return ignored
 
+    @STATS.mqttPublish.time()
     def _publish(self, topic: str, messageJson: object=None,
                  message: str=None):
         if messageJson is not None:
@@ -150,6 +160,7 @@
         (r"/()", cyclone.web.StaticFileHandler,
          {"path": ".", "default_filename": "index.html"}),
         (r'/output', OutputPage),
+        (r'/stats/(.*)', StatsHandler, {'serverName': 'rdf_to_mqtt'}),
         ], mqtt=mqtt, debug=arg['-v']), interface='::')
     log.warn('serving on %s', port)