# ============================================================ # MELODIX API - Launcher # Doble clic o "Ejecutar con PowerShell" para iniciar todo # ============================================================ Set-Location $PSScriptRoot $VenvPython = "$PSScriptRoot\venv_musical\Scripts\python.exe" $VenvActivate= "$PSScriptRoot\venv_musical\Scripts\Activate.ps1" # ---- Verificaciones rapidas -------------------------------- if (-not (Test-Path $VenvPython)) { Write-Host "ERROR: No se encontro el entorno virtual en venv_musical\" -ForegroundColor Red Read-Host "Presiona Enter para salir" exit 1 } foreach ($dir in @("logs","uploads","processed")) { $path = Join-Path $PSScriptRoot $dir if (-not (Test-Path $path)) { New-Item -ItemType Directory -Path $path -Force | Out-Null } } # ---- Obtener IP local -------------------------------------- $LocalIP = (Get-NetIPAddress -AddressFamily IPv4 | Where-Object { $_.IPAddress -notlike "127.*" -and $_.IPAddress -notlike "169.*" } | Select-Object -First 1).IPAddress # ---- Iniciar Celery Worker --------------------------------- $celeryScript = Join-Path $PSScriptRoot "_run_celery.ps1" Set-Content -Path $celeryScript -Encoding UTF8 -Value @' Set-Location $PSScriptRoot Write-Host "================================================" -ForegroundColor Cyan Write-Host " MELODIX - Celery Worker" -ForegroundColor Cyan Write-Host "================================================" -ForegroundColor Cyan Write-Host "" & ".\venv_musical\Scripts\Activate.ps1" & ".\venv_musical\Scripts\python.exe" -m celery -A tasks worker --loglevel=info --concurrency=1 -P solo Write-Host "" Write-Host "Celery Worker detenido." -ForegroundColor Yellow Read-Host "Presiona Enter para cerrar" '@ Start-Process powershell -ArgumentList "-NoExit", "-File", "`"$celeryScript`"" -WorkingDirectory $PSScriptRoot Start-Sleep -Seconds 3 # ---- Iniciar Uvicorn --------------------------------------- $uvicornScript = Join-Path $PSScriptRoot "_run_uvicorn.ps1" $uvicornContent = @' Set-Location $PSScriptRoot Write-Host "================================================" -ForegroundColor Magenta Write-Host " MELODIX - FastAPI / Uvicorn" -ForegroundColor Magenta Write-Host "================================================" -ForegroundColor Magenta Write-Host "" '@ $uvicornContent += "Write-Host ' Local: http://localhost:8000' -ForegroundColor Green`n" $uvicornContent += "Write-Host ' Red: http://${LocalIP}:8000' -ForegroundColor Green`n" $uvicornContent += "Write-Host ' Docs: http://localhost:8000/docs' -ForegroundColor Green`n" $uvicornContent += "Write-Host ''`n" $uvicornContent += @' & ".\venv_musical\Scripts\Activate.ps1" & ".\venv_musical\Scripts\python.exe" -m uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload Write-Host "" Write-Host "Uvicorn detenido." -ForegroundColor Yellow Read-Host "Presiona Enter para cerrar" '@ Set-Content -Path $uvicornScript -Encoding UTF8 -Value $uvicornContent Start-Process powershell -ArgumentList "-NoExit", "-File", "`"$uvicornScript`"" -WorkingDirectory $PSScriptRoot # ---- Resumen ----------------------------------------------- Write-Host "" Write-Host "================================================" -ForegroundColor Green Write-Host " MELODIX INICIADO CORRECTAMENTE" -ForegroundColor Green Write-Host "================================================" -ForegroundColor Green Write-Host "" Write-Host " Celery Worker -> ventana azul" -ForegroundColor Cyan Write-Host " Uvicorn API -> ventana magenta" -ForegroundColor Magenta Write-Host " API URL: http://${LocalIP}:8000" -ForegroundColor White Write-Host " Swagger Docs: http://localhost:8000/docs" -ForegroundColor White Write-Host "" Write-Host " Para detener: cierra las ventanas de Celery y Uvicorn." -ForegroundColor DarkGray Write-Host "" Read-Host "Presiona Enter para cerrar esta ventana"