Fix/server error handling (#212)

* chore: add venv/ to gitignore

* fix: add server error handling and graceful shutdown

* Fix linting issues in server.py
This commit is contained in:
Harsha Vardhan Mannem 2025-05-22 00:45:07 -05:00 committed by GitHub
parent 55ce399969
commit 3ed70e11d5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 26 additions and 11 deletions

1
.gitignore vendored
View File

@ -11,6 +11,7 @@ static/browser_history/*.gif
# Virtual environments # Virtual environments
.venv .venv
venv/
# Environment variables # Environment variables
.env .env

View File

@ -7,7 +7,8 @@ Server script for running the DeerFlow API.
import argparse import argparse
import logging import logging
import signal
import sys
import uvicorn import uvicorn
# Configure logging # Configure logging
@ -18,6 +19,17 @@ logging.basicConfig(
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
def handle_shutdown(signum, frame):
"""Handle graceful shutdown on SIGTERM/SIGINT"""
logger.info("Received shutdown signal. Starting graceful shutdown...")
sys.exit(0)
# Register signal handlers
signal.signal(signal.SIGTERM, handle_shutdown)
signal.signal(signal.SIGINT, handle_shutdown)
if __name__ == "__main__": if __name__ == "__main__":
# Parse command line arguments # Parse command line arguments
parser = argparse.ArgumentParser(description="Run the DeerFlow API server") parser = argparse.ArgumentParser(description="Run the DeerFlow API server")
@ -50,12 +62,11 @@ if __name__ == "__main__":
# Determine reload setting # Determine reload setting
reload = False reload = False
# Command line arguments override defaults
if args.reload: if args.reload:
reload = True reload = True
logger.info("Starting DeerFlow API server") try:
logger.info(f"Starting DeerFlow API server on {args.host}:{args.port}")
uvicorn.run( uvicorn.run(
"src.server:app", "src.server:app",
host=args.host, host=args.host,
@ -63,3 +74,6 @@ if __name__ == "__main__":
reload=reload, reload=reload,
log_level=args.log_level, log_level=args.log_level,
) )
except Exception as e:
logger.error(f"Failed to start server: {str(e)}")
sys.exit(1)