services/metadata_service/server.py (47 lines of code) (raw):

import asyncio import os from aiohttp import web from .api.run import RunApi from .api.flow import FlowApi from .api.step import StepApi from .api.task import TaskApi from .api.artifact import ArtificatsApi from .api.admin import AuthApi from .api.metadata import MetadataApi from services.data.postgres_async_db import AsyncPostgresDB from services.utils import DBConfiguration PATH_PREFIX = os.environ.get("PATH_PREFIX", "") def app(loop=None, db_conf: DBConfiguration = None, middlewares=None, path_prefix=""): loop = loop or asyncio.get_event_loop() _app = web.Application(loop=loop) app = web.Application(loop=loop) if path_prefix else _app async_db = AsyncPostgresDB() loop.run_until_complete(async_db._init(db_conf)) FlowApi(app) RunApi(app) StepApi(app) TaskApi(app) MetadataApi(app) ArtificatsApi(app) AuthApi(app) if path_prefix: _app.add_subapp(path_prefix, app) if middlewares: _app.middlewares.extend(middlewares) return _app def main(): loop = asyncio.get_event_loop() the_app = app(loop, DBConfiguration(), path_prefix=PATH_PREFIX) handler = web.AppRunner(the_app) loop.run_until_complete(handler.setup()) port = os.environ.get("MF_METADATA_PORT", 8080) host = str(os.environ.get("MF_METADATA_HOST", "0.0.0.0")) f = loop.create_server(handler.server, host, port) srv = loop.run_until_complete(f) print("serving on", srv.sockets[0].getsockname()) try: loop.run_forever() except KeyboardInterrupt: pass if __name__ == "__main__": main()