|
|
#!/bin/bash |
|
|
|
|
|
echo "==========================================" |
|
|
echo "Starting Swara API Services" |
|
|
echo "==========================================" |
|
|
|
|
|
|
|
|
chmod -R 777 /.cache 2>/dev/null || true |
|
|
chmod -R 777 /data/.cache 2>/dev/null || true |
|
|
|
|
|
|
|
|
export OMP_NUM_THREADS=4 |
|
|
|
|
|
|
|
|
export REDIS_HOST=localhost |
|
|
export REDIS_PORT=6379 |
|
|
export REDIS_DB=0 |
|
|
|
|
|
|
|
|
echo "[1/4] Starting Redis server (in-memory mode)..." |
|
|
redis-server --daemonize yes --bind 127.0.0.1 --port 6379 \ |
|
|
--save "" \ |
|
|
--appendonly no \ |
|
|
--maxmemory 512mb \ |
|
|
--maxmemory-policy allkeys-lru |
|
|
|
|
|
|
|
|
echo "[2/4] Waiting for Redis to be ready..." |
|
|
REDIS_TIMEOUT=30 |
|
|
ELAPSED=0 |
|
|
until redis-cli -h localhost -p 6379 ping 2>/dev/null | grep -q PONG; do |
|
|
if [ $ELAPSED -ge $REDIS_TIMEOUT ]; then |
|
|
echo "ERROR: Redis failed to start within ${REDIS_TIMEOUT}s" |
|
|
exit 1 |
|
|
fi |
|
|
echo " Waiting for Redis... (${ELAPSED}s)" |
|
|
sleep 2 |
|
|
ELAPSED=$((ELAPSED + 2)) |
|
|
done |
|
|
|
|
|
echo " β Redis is ready!" |
|
|
|
|
|
|
|
|
echo "[3/4] Starting RQ Worker..." |
|
|
python -m app.worker & |
|
|
WORKER_PID=$! |
|
|
echo " β Worker started (PID: $WORKER_PID)" |
|
|
|
|
|
|
|
|
sleep 2 |
|
|
|
|
|
|
|
|
echo "[4/4] Starting FastAPI application..." |
|
|
echo "==========================================" |
|
|
echo "API will be available at:" |
|
|
echo " http://localhost:7860" |
|
|
echo " http://localhost:7860/docs (API Documentation)" |
|
|
echo "==========================================" |
|
|
|
|
|
uvicorn app.main:app --host 0.0.0.0 --port 7860 |
|
|
|