comparison environment.py @ 5:b5bfd0dd69d6

upadte bg loop, patchablegraph, py version
author drewp@bigasterisk.com
date Sun, 28 Aug 2022 21:37:20 -0700
parents e7f33fa31883
children 145779f2d79d
comparison
equal deleted inserted replaced
4:dc4b1cc45790 5:b5bfd0dd69d6
2 """ 2 """
3 return some rdf about the environment, e.g. the current time, 3 return some rdf about the environment, e.g. the current time,
4 daytime/night, overall modes like 'maintenance mode', etc 4 daytime/night, overall modes like 'maintenance mode', etc
5 5
6 """ 6 """
7 import asyncio
8 import datetime 7 import datetime
9 import logging 8 import logging
9
10 import background_loop
10 from dateutil.relativedelta import FR, relativedelta 11 from dateutil.relativedelta import FR, relativedelta
11 from dateutil.tz import tzlocal 12 from dateutil.tz import tzlocal
12 from prometheus_client import Gauge, Summary 13 from patchablegraph import PatchableGraph
14 from patchablegraph.handler import GraphEvents, StaticGraph
13 from rdflib import Literal, Namespace 15 from rdflib import Literal, Namespace
14 from starlette.applications import Starlette 16 from starlette.applications import Starlette
15 from starlette.routing import Route 17 from starlette.routing import Route
16 from starlette.staticfiles import StaticFiles 18 from starlette.staticfiles import StaticFiles
17 from starlette_exporter import PrometheusMiddleware, handle_metrics 19 from starlette_exporter import PrometheusMiddleware, handle_metrics
18 20
19 import background_loop
20 from patchablegraph import PatchableGraph
21 from patchablegraph.handler import StaticGraph, GraphEvents
22 # from rdfdoc import Doc 21 # from rdfdoc import Doc
23 from twilight import isWithinTwilight 22 from twilight import isWithinTwilight
24 23
25 ROOM = Namespace("http://projects.bigasterisk.com/room/") 24 ROOM = Namespace("http://projects.bigasterisk.com/room/")
26 DEV = Namespace("http://projects.bigasterisk.com/device/") 25 DEV = Namespace("http://projects.bigasterisk.com/device/")
27 26
28 logging.basicConfig(level=logging.INFO) 27 logging.basicConfig(level=logging.INFO)
29 28 logging.getLogger('patchablegraph').setLevel(logging.WARNING)
30 STAT_UPDATE_UP = Gauge('background_loop_up', 'not erroring')
31 STAT_UPDATE_CALLS = Summary('background_loop_calls', 'calls')
32 29
33 30
34 def update(masterGraph): 31 def update(masterGraph):
35 32
36 def stmt(s, p, o): 33 def stmt(s, p, o):
56 53
57 54
58 def main(): 55 def main():
59 masterGraph = PatchableGraph() 56 masterGraph = PatchableGraph()
60 57
61 asyncio.create_task(background_loop.loop_forever(lambda first: update(masterGraph), 1, STAT_UPDATE_UP, STAT_UPDATE_CALLS)) 58 loop = background_loop.loop_forever(lambda first_run=False: update(masterGraph), 1)
62 59
63 app = Starlette( 60 app = Starlette(
64 debug=True, 61 debug=True,
65 routes=[ 62 routes=[
66 Route('/', StaticFiles(directory='.', html=True)), 63 Route('/', StaticFiles(directory='.', html=True)),