|
6 | 6 | """ |
7 | 7 |
|
8 | 8 | import logging |
9 | | -import signal |
10 | | -import sys |
11 | | -from typing import NoReturn |
12 | 9 |
|
13 | 10 | import typer |
14 | 11 |
|
|
25 | 22 | shutdown_requested = False |
26 | 23 |
|
27 | 24 |
|
28 | | -def handle_shutdown(signum: int, frame: object) -> None: |
29 | | - """ |
30 | | - Signal handler for graceful shutdown. |
31 | | -
|
32 | | - Args: |
33 | | - signum: Signal number received |
34 | | - frame: Current stack frame (unused) |
35 | | - """ |
36 | | - global shutdown_requested |
37 | | - signal_name = signal.Signals(signum).name |
38 | | - logger.warning("Received %s signal. Initiating graceful shutdown...", signal_name) |
39 | | - shutdown_requested = True |
40 | | - |
41 | | - |
42 | | -def cleanup() -> None: |
43 | | - """Perform cleanup operations before shutdown.""" |
44 | | - logger.info("Cleaning up resources...") |
45 | | - # Add any necessary cleanup operations here |
46 | | - # For example: |
47 | | - # - Close API connections |
48 | | - # - Save state if needed |
49 | | - # - Release any acquired resources |
50 | | - logger.info("Cleanup completed. Exiting...") |
51 | | - |
52 | | - |
53 | | -def setup_signal_handlers() -> None: |
54 | | - """Configure signal handlers for graceful shutdown.""" |
55 | | - signal.signal(signal.SIGTERM, handle_shutdown) |
56 | | - signal.signal(signal.SIGINT, handle_shutdown) |
57 | | - |
58 | | - |
59 | | -def exit_gracefully() -> NoReturn: |
60 | | - """Perform cleanup and exit.""" |
61 | | - cleanup() |
62 | | - sys.exit(0) |
63 | | - |
64 | | - |
65 | 25 | @app.command() |
66 | 26 | def main( |
67 | 27 | ctx: typer.Context, |
@@ -95,20 +55,7 @@ def main( |
95 | 55 |
|
96 | 56 | logger.info("Using %s as the provider", provider) |
97 | 57 |
|
98 | | - # Set up signal handlers for graceful shutdown |
99 | | - setup_signal_handlers() |
100 | | - |
101 | | - while not shutdown_requested: |
102 | | - try: |
103 | | - mcp.run() |
104 | | - except Exception as e: |
105 | | - if shutdown_requested: |
106 | | - logger.info("Shutdown requested during error recovery") |
107 | | - break |
108 | | - logger.error("MCP server error occurred: %s", str(e)) |
109 | | - logger.info("Restarting MCP server...") |
110 | | - |
111 | | - exit_gracefully() |
| 58 | + mcp.run() |
112 | 59 |
|
113 | 60 |
|
114 | 61 | if __name__ == "__main__": |
|
0 commit comments