Spaces:
Running
Running
| set -euo pipefail | |
| log() { | |
| echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" | |
| } | |
| log "=== Starting up ===" | |
| log "Python: $(python --version 2>&1)" | |
| log "Working dir: $(pwd)" | |
| # Ensure required directories exist | |
| mkdir -p /app/data /app/logs | |
| log "Data directories: OK" | |
| # Check core deps | |
| python -c "import markitdown, fastapi, httpx, pandas" 2>/dev/null | |
| if [ $? -ne 0 ]; then | |
| log "ERROR: Missing core dependencies" | |
| python -c "import markitdown" 2>&1 | log | |
| python -c "import fastapi" 2>&1 | log | |
| python -c "import httpx" 2>&1 | log | |
| python -c "import pandas" 2>&1 | log | |
| exit 1 | |
| fi | |
| log "Core dependencies: OK" | |
| # Start SearXNG | |
| export SEARXNG_SETTINGS_PATH="${SEARXNG_SETTINGS_PATH:-/app/searxng/settings.yml}" | |
| log "SearXNG settings path: $SEARXNG_SETTINGS_PATH" | |
| if [ -f "$SEARXNG_SETTINGS_PATH" ]; then | |
| log "Starting SearXNG..." | |
| searxng-run > /tmp/searxng.log 2>&1 & | |
| SEARXNG_PID=$! | |
| log "SearXNG PID: $SEARXNG_PID" | |
| sleep 3 | |
| if kill -0 "$SEARXNG_PID" 2>/dev/null; then | |
| log "SearXNG is running (PID: $SEARXNG_PID)" | |
| else | |
| log "WARNING: SearXNG process exited. Check /tmp/searxng.log" | |
| cat /tmp/searxng.log 2>/dev/null | tail -10 | while IFS= read -r line; do log " searxng: $line"; done | |
| fi | |
| else | |
| log "WARNING: SearXNG settings not found at $SEARXNG_SETTINGS_PATH, skipping SearXNG start" | |
| fi | |
| # Start main app | |
| HOST="${HOST:-0.0.0.0}" | |
| PORT="${PORT:-7860}" | |
| WORKERS="${WORKERS:-1}" | |
| LOG_LEVEL="${LOG_LEVEL:-info}" | |
| log "Starting uvicorn: host=$HOST port=$PORT workers=$WORKERS log_level=$LOG_LEVEL" | |
| exec python -m uvicorn app.api.server:app \ | |
| --host "$HOST" \ | |
| --port "$PORT" \ | |
| --workers "$WORKERS" \ | |
| --log-level "$LOG_LEVEL" \ | |
| --access-log | |