soyailabs / start_server_background.ps1
SOY NV AI
feat: Add webnovel continue upload feature and improve RAG
9fa456d
raw
history blame
2.37 kB
# λ°±κ·ΈλΌμš΄λ“œμ—μ„œ μ„œλ²„λ₯Ό 계속 μ‹€ν–‰ν•˜λŠ” 슀크립트
$ErrorActionPreference = "Continue"
$scriptPath = Split-Path -Parent $MyInvocation.MyCommand.Path
Set-Location $scriptPath
# 둜그 파일 경둜
$logFile = Join-Path $scriptPath "server.log"
function Write-Log {
param([string]$Message)
$timestamp = Get-Date -Format 'yyyy-MM-dd HH:mm:ss'
$logMessage = "[$timestamp] $Message"
Write-Host $logMessage
Add-Content -Path $logFile -Value $logMessage
}
function Start-ServerProcess {
Write-Log "μ„œλ²„ ν”„λ‘œμ„ΈμŠ€ μ‹œμž‘ 쀑..."
$processInfo = New-Object System.Diagnostics.ProcessStartInfo
$processInfo.FileName = "python"
$processInfo.Arguments = "run.py"
$processInfo.WorkingDirectory = $scriptPath
$processInfo.UseShellExecute = $false
$processInfo.RedirectStandardOutput = $true
$processInfo.RedirectStandardError = $true
$processInfo.CreateNoWindow = $true
$process = New-Object System.Diagnostics.Process
$process.StartInfo = $processInfo
# 좜λ ₯ λ¦¬λ‹€μ΄λ ‰μ…˜
$process.add_OutputDataReceived({
param($sender, $e)
if ($e.Data) {
Write-Log $e.Data
}
})
$process.add_ErrorDataReceived({
param($sender, $e)
if ($e.Data) {
Write-Log "ERROR: $($e.Data)"
}
})
$process.Start() | Out-Null
$process.BeginOutputReadLine()
$process.BeginErrorReadLine()
return $process
}
# 메인 루프
Write-Log "=== μ„œλ²„ μžλ™ μž¬μ‹œμž‘ 슀크립트 μ‹œμž‘ ==="
while ($true) {
$process = $null
try {
$process = Start-ServerProcess
Write-Log "μ„œλ²„ ν”„λ‘œμ„ΈμŠ€ μ‹œμž‘λ¨ (PID: $($process.Id))"
# ν”„λ‘œμ„ΈμŠ€κ°€ μ’…λ£Œλ  λ•ŒκΉŒμ§€ λŒ€κΈ°
$process.WaitForExit()
$exitCode = $process.ExitCode
Write-Log "μ„œλ²„ ν”„λ‘œμ„ΈμŠ€ μ’…λ£Œλ¨ (Exit Code: $exitCode)"
# ν”„λ‘œμ„ΈμŠ€ 정리
if (!$process.HasExited) {
$process.Kill()
}
$process.Dispose()
}
catch {
Write-Log "였λ₯˜ λ°œμƒ: $_"
if ($process -and !$process.HasExited) {
try {
$process.Kill()
} catch {}
}
}
Write-Log "5초 ν›„ μ„œλ²„λ₯Ό μž¬μ‹œμž‘ν•©λ‹ˆλ‹€..."
Start-Sleep -Seconds 5
}