Mercurial > code > home > repos > video
diff video.py @ 17:071943adf000
dnd a file or a url which we'll queue and fetch
author | drewp@bigasterisk.com |
---|---|
date | Sun, 16 Apr 2023 03:19:33 -0700 |
parents | 53d99454f394 |
children | 1b388ee5dd09 |
line wrap: on
line diff
--- a/video.py Sun Apr 16 03:17:48 2023 -0700 +++ b/video.py Sun Apr 16 03:19:33 2023 -0700 @@ -1,3 +1,5 @@ +import asyncio +import json import logging from pathlib import Path @@ -11,9 +13,10 @@ from video_file_store import VideoFileStore from video_ingest import VideoIngest - +import dl_queue logging.basicConfig(level=logging.DEBUG) log = logging.getLogger() +logging.getLogger('sse_starlette').setLevel(logging.WARNING) def root(req): @@ -36,7 +39,7 @@ async def ingestVideoUrl(req: Request) -> Response: url = await req.body() - svc.ingestUrl(url) + await svc.ingestUrl(url.decode('utf8')) return Response(status_code=202) @@ -47,18 +50,15 @@ async def ingestQueue(req: Request) -> EventSourceResponse: - - def convertEvents(svcEvents): - for ev in svcEvents: - yield dict(type='ev') - - return EventSourceResponse(convertEvents(svc.events())) + async def g(): + async for ev in svc.events(): + yield json.dumps(ev) + return EventSourceResponse(g()) store = VideoFileStore(top=Path('/data')) svc = VideoIngest(store) - def main(): app = Starlette( @@ -78,6 +78,8 @@ app.add_middleware(PrometheusMiddleware, app_name='video_api') app.add_route("/metrics", handle_metrics) + + app.state.processTask = asyncio.create_task(dl_queue.process()) return app