File size: 2,693 Bytes
f9e2361
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#!/bin/bash
# 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