MCPcopy Create free account
hub / github.com/dbunt1tled/python-fast-api / start

Method start

src/cmd/cli_command_base.py:55–90  ·  view source on GitHub ↗
(cls)

Source from the content-addressed store, hash-verified

53
54 @classmethod
55 def start(cls) -> None:
56 command = cls()
57 loop = asyncio.new_event_loop()
58 asyncio.set_event_loop(loop)
59
60 shutdown_event = asyncio.Event()
61 main_task = None
62
63 def signal_handler(signum: int, frame: Any) -> None:
64 print(f"\n🛑 Received signal {signum}. Initiating graceful shutdown...")
65 if main_task and not main_task.done():
66 main_task.cancel()
67 shutdown_event.set()
68
69 signal.signal(signal.SIGINT, signal_handler)
70 signal.signal(signal.SIGTERM, signal_handler)
71
72 try:
73 main_task = loop.create_task(command.run(loop))
74 exit_code = loop.run_until_complete(main_task)
75 sys.exit(exit_code)
76 except asyncio.CancelledError:
77 print("🚦 Command was cancelled gracefully")
78 sys.exit(0)
79 except KeyboardInterrupt:
80 print("🚦 Keyboard interrupt received, shutting down...")
81 sys.exit(0)
82 finally:
83 pending = asyncio.all_tasks(loop)
84 for task in pending:
85 task.cancel()
86
87 if pending:
88 loop.run_until_complete(asyncio.gather(*pending, return_exceptions=True))
89
90 loop.close()

Callers 1

email_worker.pyFile · 0.45

Calls 2

runMethod · 0.80
closeMethod · 0.45

Tested by

no test coverage detected