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