diff video.py @ 3:ee55ed10faec

start py service deployment
author drewp@bigasterisk.com
date Mon, 20 Mar 2023 20:50:33 -0700
parents 3f2da406c788
children c8a41359505c
line wrap: on
line diff
--- a/video.py	Mon Mar 20 20:26:02 2023 -0700
+++ b/video.py	Mon Mar 20 20:50:33 2023 -0700
@@ -1,61 +1,38 @@
-import docopt
-
-from twisted.internet import reactor
-import cyclone.httpserver
-import cyclone.web
-import requests
-
-from cycloneerr import PrettyErrorHandler
-from patchablegraph import PatchableGraph, CycloneGraphEventsHandler, CycloneGraphHandler
-from standardservice.logsetup import log, verboseLogging
-
+import asyncio
+import logging
+from typing import List
 
-def getLoginBar(request: cyclone.httpserver.HTTPRequest):
-    c = requests.get('http://bang:9023/_loginBar',
-                     headers={'Cookie': request.headers['cookie']})
-    return c.content
-
+import uvicorn
+from prometheus_client import Gauge
+from starlette.applications import Starlette
+from starlette.requests import Request
+from starlette.responses import HTMLResponse
+from starlette.routing import Route
+from starlette_exporter import PrometheusMiddleware, handle_metrics
 
-class Transaction(PrettyErrorHandler, cyclone.web.RequestHandler):
-    def get(self):
-        self.render('transaction.html',
-                    txn='data',
-                    loginBar=getLoginBar(self.request))
+logging.basicConfig(level=logging.DEBUG)
+log = logging.getLogger()
 
 
-def main():
-    args = docopt.docopt('''
-Usage:
-  video.py [options]
-
-Options:
-  -v, --verbose  more logging
-''')
-    verboseLogging(args['--verbose'])
-
-    graph = PatchableGraph()
-
-    class Application(cyclone.web.Application):
-        def __init__(self):
-            handlers = [
-                (r"/()",                     cyclone.web.StaticFileHandler, {'path': '.', 'default_filename': 'index.html'}),
-                (r'/build/(bundle\.js)',     cyclone.web.StaticFileHandler, {'path': './build/'}),
-                (r'/shaka-player/dist/(.*)', cyclone.web.StaticFileHandler, {'path': './shaka-player/dist/'}),
-                (r'/transaction', Transaction),
-                (r'/graph/video', CycloneGraphHandler, {'masterGraph': graph}),
-                (r'/graph/video/events', CycloneGraphEventsHandler, {'masterGraph': graph}),
-            ]
-            cyclone.web.Application.__init__(
-                self,
-                handlers,
-                graph=graph,
-                debug=args['--verbose'],
-                template_path='.',
-            )
-
-    reactor.listenTCP(9053, Application(), interface='::')
-    reactor.run()
+def root(req):
+    return HTMLResponse("api")
 
 
-if __name__ == '__main__':
-    main()
+async def main():
+
+    app = Starlette(
+        debug=True,
+        routes=[
+            Route('/', root),
+        ],
+    )
+
+    app.add_middleware(PrometheusMiddleware, app_name='video_api')
+    app.add_route("/metrics", handle_metrics)
+
+    config = uvicorn.Config(app, host='0.0.0.0', port=9053, log_level="info")
+    server = uvicorn.Server(config)
+    await server.serve()
+
+
+asyncio.run(main(), debug=False)