melodix-api / Iniciar-MelodixAPI.ps1
GitHub Action
deploy from github actions
440bac0
Raw
History Blame Contribute Delete
3.92 kB
# ============================================================
# 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"