Mercurial > code > home > repos > environment
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)), |