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