feat: refine the server bootstrap script

This commit is contained in:
He Tao 2025-04-23 12:17:34 +08:00
parent e7653f1c1e
commit 53f6880e25
2 changed files with 49 additions and 19 deletions

View File

@ -1,19 +1,16 @@
#!/bin/bash #!/bin/bash
# traptest.sh
# Start both of DeerFlow's backend and web UI server. # Start both of DeerFlow's backend and web UI server.
# If the user presses Ctrl+C, kill them both. # If the user presses Ctrl+C, kill them both.
if [ "$1" = "--dev" -o "$1" = "-d" -o "$1" = "dev" ]; then if [ "$1" = "--dev" -o "$1" = "-d" -o "$1" = "dev" -o "$1" = "development" ]; then
echo "Starting DeerFlow in [DEVELOPMENT] mode..." echo -e "Starting DeerFlow in [DEVELOPMENT] mode...\n"
echo uv run server.py --reload & SERVER_PID=$$!
uv run server.py --reload & SERVER_PID=$$! cd web && pnpm dev & WEB_PID=$$!
cd web && pnpm dev & WEB_PID=$$! trap "kill $$SERVER_PID $$WEB_PID" SIGINT SIGTERM
trap "kill $$SERVER_PID $$WEB_PID" SIGINT SIGTERM wait
wait
else else
echo "Starting DeerFlow in [PRODUCTION] mode..." echo -e "Starting DeerFlow in [PRODUCTION] mode...\n"
echo uv run server.py
uv run server.py cd web && pnpm start
cd web && pnpm start
fi fi

View File

@ -5,8 +5,8 @@
Server script for running the Deer API. Server script for running the Deer API.
""" """
import argparse
import logging import logging
import sys
import uvicorn import uvicorn
@ -19,14 +19,47 @@ logging.basicConfig(
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
if __name__ == "__main__": if __name__ == "__main__":
# Parse command line arguments
parser = argparse.ArgumentParser(description="Run the Deer API server")
parser.add_argument(
"--reload",
action="store_true",
help="Enable auto-reload (default: True except on Windows)",
)
parser.add_argument(
"--host",
type=str,
default="localhost",
help="Host to bind the server to (default: localhost)",
)
parser.add_argument(
"--port",
type=int,
default=8000,
help="Port to bind the server to (default: 8000)",
)
parser.add_argument(
"--log-level",
type=str,
default="info",
choices=["debug", "info", "warning", "error", "critical"],
help="Log level (default: info)",
)
args = parser.parse_args()
# Determine reload setting
reload = False
# Command line arguments override defaults
if args.reload:
reload = True
logger.info("Starting Deer API server") logger.info("Starting Deer API server")
reload = True
if sys.platform.startswith("win"):
reload = False
uvicorn.run( uvicorn.run(
"src.server:app", "src.server:app",
host="0.0.0.0", host=args.host,
port=8000, port=args.port,
reload=reload, reload=reload,
log_level="info", log_level=args.log_level,
) )