import asyncio from typing import Optional from cpl_core.application import ApplicationABC, ApplicationBuilder from gismo.application import Gismo from gismo.startup import Startup from modules.boot_log.boot_log_extension import BootLogExtension class Main: def __init__(self): self._gismo: Optional[Gismo] = None async def main(self): app_builder = ApplicationBuilder(Gismo) app_builder.use_extension(BootLogExtension) app_builder.use_startup(Startup) self._gismo: Gismo = await app_builder.build_async() await self._gismo.run_async() async def stop(self): await self._gismo.stop_async() if __name__ == '__main__': main = Main() ml = asyncio.get_event_loop() try: ml.run_until_complete(main.main()) except KeyboardInterrupt: ml.run_until_complete(main.stop())