Merge pull request #98 from bucolucas/add-powershell-script
Add PowerShell script to run Python file with restart logic
This commit is contained in:
@@ -0,0 +1,49 @@
|
|||||||
|
param(
|
||||||
|
[Parameter(Mandatory=$true)]
|
||||||
|
[string]$PythonFile,
|
||||||
|
[int]$SpecialExitCode = 42,
|
||||||
|
[int]$MaxAttempts = 20
|
||||||
|
)
|
||||||
|
|
||||||
|
function Run-PythonScript {
|
||||||
|
param($ScriptPath)
|
||||||
|
$process = Start-Process -FilePath "python" -ArgumentList $ScriptPath -PassThru -Wait -NoNewWindow
|
||||||
|
return $process.ExitCode
|
||||||
|
}
|
||||||
|
|
||||||
|
function Git-Pull {
|
||||||
|
git pull
|
||||||
|
return $LASTEXITCODE -eq 0
|
||||||
|
}
|
||||||
|
|
||||||
|
$attempt = 1
|
||||||
|
$waitTime = 15
|
||||||
|
|
||||||
|
while ($attempt -le $MaxAttempts) {
|
||||||
|
Write-Host "Attempt $attempt of $MaxAttempts"
|
||||||
|
|
||||||
|
$exitCode = Run-PythonScript -ScriptPath $PythonFile
|
||||||
|
|
||||||
|
if ($exitCode -eq $SpecialExitCode) {
|
||||||
|
Write-Host "Special exit code detected. Attempting git pull..."
|
||||||
|
|
||||||
|
if (Git-Pull) {
|
||||||
|
Write-Host "Git pull successful. Restarting Python script..."
|
||||||
|
$attempt = 1
|
||||||
|
$waitTime = 15
|
||||||
|
continue
|
||||||
|
} else {
|
||||||
|
Write-Host "Git pull failed. Waiting $waitTime seconds before next attempt..."
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Write-Host "Python script exited with code $exitCode. Exiting..."
|
||||||
|
exit $exitCode
|
||||||
|
}
|
||||||
|
|
||||||
|
Start-Sleep -Seconds $waitTime
|
||||||
|
$attempt++
|
||||||
|
$waitTime *= 2
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "Maximum attempts reached. Exiting..."
|
||||||
|
exit 1
|
||||||
Reference in New Issue
Block a user