# HG changeset patch # User drewp # Date 1581727630 28800 # Node ID ffbebd7902eeda1f44a89b1719c7001a83bb14f6 # Parent 71eec31da91999d285914d0e34613e8344ff6283 stats page Ignore-this: b59d958287c2381c908ec9583706966 darcs-hash:97af26702e35e41ae4a1e01cb3287cb17878dead diff -r 71eec31da919 -r ffbebd7902ee service/rdf_to_mqtt/rdf_to_mqtt.py --- 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)