Spaces:
Running
Running
| # DR-Bench - Start WebSearch Service | |
| # | |
| # This starts the Brightdata-based WebSearch microservice needed | |
| # for running benchmarks. | |
| # | |
| # Prerequisites: | |
| # - Python 3.11+ | |
| # - Brightdata API token (set BRIGHTDATA_API_TOKEN in .env) | |
| # - pip install -r services/websearch/requirements.txt | |
| # | |
| # Usage: | |
| # ./scripts/start_services.sh # Start websearch service | |
| # ./scripts/start_services.sh stop # Stop websearch service | |
| set -e | |
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | |
| PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" | |
| # Colors | |
| GREEN='\033[0;32m' | |
| RED='\033[0;31m' | |
| BLUE='\033[0;34m' | |
| NC='\033[0m' | |
| log() { echo -e "${BLUE}[$(date +'%H:%M:%S')]${NC} $1"; } | |
| success() { echo -e "${GREEN}[$(date +'%H:%M:%S')] $1${NC}"; } | |
| error() { echo -e "${RED}[$(date +'%H:%M:%S')] $1${NC}"; } | |
| # Load .env | |
| if [ -f "$PROJECT_ROOT/.env" ]; then | |
| set -a | |
| source "$PROJECT_ROOT/.env" | |
| set +a | |
| fi | |
| WEBSEARCH_PORT=${WEBSEARCH_PORT:-8002} | |
| PID_FILE="$PROJECT_ROOT/.websearch.pid" | |
| LOG_FILE="$PROJECT_ROOT/logs/websearch.log" | |
| start_websearch() { | |
| log "Starting WebSearch service on port $WEBSEARCH_PORT..." | |
| mkdir -p "$PROJECT_ROOT/logs" "$PROJECT_ROOT/data" | |
| export WEBSEARCH_DB_PATH="$PROJECT_ROOT/data/websearch_cache.db" | |
| cd "$PROJECT_ROOT/services/websearch" | |
| nohup python -m uvicorn api:app --host 0.0.0.0 --port $WEBSEARCH_PORT > "$LOG_FILE" 2>&1 & | |
| echo $! > "$PID_FILE" | |
| sleep 2 | |
| if kill -0 $(cat "$PID_FILE") 2>/dev/null; then | |
| success "WebSearch service started (PID: $(cat $PID_FILE))" | |
| echo " URL: http://localhost:$WEBSEARCH_PORT" | |
| echo " Docs: http://localhost:$WEBSEARCH_PORT/docs" | |
| echo " Logs: $LOG_FILE" | |
| else | |
| error "WebSearch service failed to start. Check $LOG_FILE" | |
| exit 1 | |
| fi | |
| } | |
| stop_websearch() { | |
| if [ -f "$PID_FILE" ]; then | |
| PID=$(cat "$PID_FILE") | |
| if kill -0 $PID 2>/dev/null; then | |
| kill $PID | |
| rm "$PID_FILE" | |
| success "WebSearch service stopped (PID: $PID)" | |
| else | |
| rm "$PID_FILE" | |
| log "WebSearch service was not running" | |
| fi | |
| else | |
| log "No PID file found" | |
| fi | |
| } | |
| status_websearch() { | |
| if [ -f "$PID_FILE" ] && kill -0 $(cat "$PID_FILE") 2>/dev/null; then | |
| success "WebSearch: Running (PID: $(cat $PID_FILE)) on port $WEBSEARCH_PORT" | |
| else | |
| error "WebSearch: Not running" | |
| fi | |
| } | |
| case "${1:-start}" in | |
| start) start_websearch ;; | |
| stop) stop_websearch ;; | |
| restart) stop_websearch; sleep 1; start_websearch ;; | |
| status) status_websearch ;; | |
| *) | |
| echo "Usage: $0 {start|stop|restart|status}" | |
| exit 1 | |
| ;; | |
| esac | |