Windows-Worker: Tray-Symbol + rueckstandsfreie Deinstallation
Ampel / ampel (push) Successful in 27s
Ampel / ampel (push) Successful in 27s
- tray.py (nur nativer Windows-Worker; Docker unberuehrt): pystray+Pillow-
Tray neben der Uhr — Status, Worker starten/stoppen, Rippy oeffnen,
Log anzeigen, Beenden (stoppt den Worker mit). Celery laeuft als
Kind-Prozess ohne Konsolenfenster (CREATE_NO_WINDOW), Log in worker.log.
- install.ps1 erzeugt jetzt start-tray.bat (pythonw, empfohlen),
start-worker.bat (Konsole/Debug) und uninstall.ps1: stoppt alle
Prozesse aus dem Ordner, loescht die Autostart-Aufgabe, meldet den
Worker per DELETE /workers/{name} in Rippy ab und entfernt den Ordner
komplett. -Autostart registriert die Tray-Variante (onlogon).
- UI-Beschreibung + Anleitung entsprechend ergaenzt.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -61,6 +61,8 @@ if (-not (Test-Path "venv")) {
|
||||
}
|
||||
& .\venv\Scripts\python.exe -m pip install --quiet --upgrade pip
|
||||
& .\venv\Scripts\pip.exe install --quiet -r requirements.txt
|
||||
# Nur fuer den Windows-Worker: Tray-Symbol (Status, Start/Stopp, Beenden)
|
||||
& .\venv\Scripts\pip.exe install --quiet pystray pillow
|
||||
Write-Host "Python-Abhaengigkeiten installiert."
|
||||
|
||||
# 4. HandBrakeCLI besorgen (falls noetig)
|
||||
@@ -90,14 +92,57 @@ set PATH=%~dp0;%PATH%
|
||||
venv\Scripts\celery.exe -A celery_app worker --loglevel=info -Q transcode --pool=solo -n ${WorkerName}@%%h
|
||||
"@
|
||||
Set-Content -Path "start-worker.bat" -Value $bat -Encoding ASCII
|
||||
Write-Host "start-worker.bat erzeugt."
|
||||
|
||||
# 6. Optional: Autostart bei Anmeldung
|
||||
# 6. Tray-Start (empfohlen): Symbol neben der Uhr, kein Konsolenfenster
|
||||
$trayBat = @"
|
||||
@echo off
|
||||
rem Rippy-Worker mit Tray-Symbol — verbindet sich mit $RippyHost
|
||||
cd /d "%~dp0"
|
||||
set REDIS_URL=redis://${RippyHost}:6379/0
|
||||
set DATABASE_URL=postgresql://rippy:rippy@${RippyHost}:5432/rippy
|
||||
set API_URL=http://${RippyHost}:8000
|
||||
set WORKER_NAME=$WorkerName
|
||||
set RIPPY_TRAY_HOST=$RippyHost
|
||||
set PATH=%~dp0;%PATH%
|
||||
start "" venv\Scripts\pythonw.exe tray.py
|
||||
"@
|
||||
Set-Content -Path "start-tray.bat" -Value $trayBat -Encoding ASCII
|
||||
Write-Host "start-worker.bat + start-tray.bat erzeugt."
|
||||
|
||||
# 7. Deinstaller — MUSS-Kriterium: rueckstandsfrei entfernbar
|
||||
$uninstall = @"
|
||||
# Rippy-Worker DEINSTALLIEREN: stoppt Prozesse, entfernt Autostart,
|
||||
# meldet den Worker in Rippy ab und loescht diesen Ordner komplett.
|
||||
param([switch]`$Force)
|
||||
if (-not `$Force) {
|
||||
`$antwort = Read-Host "Rippy-Worker '$WorkerName' wirklich deinstallieren? (j/n)"
|
||||
if (`$antwort -ne "j") { Write-Host "Abgebrochen."; exit }
|
||||
}
|
||||
Get-CimInstance Win32_Process | Where-Object {
|
||||
`$_.ExecutablePath -like "`$PSScriptRoot*"
|
||||
} | ForEach-Object { Stop-Process -Id `$_.ProcessId -Force -ErrorAction SilentlyContinue }
|
||||
Start-Sleep 2
|
||||
schtasks /delete /tn "RippyWorker" /f 2>`$null | Out-Null
|
||||
try {
|
||||
Invoke-RestMethod -Method Delete "http://$RippyHost/api/workers/$WorkerName" -TimeoutSec 5 | Out-Null
|
||||
Write-Host "Worker-Eintrag in Rippy entfernt."
|
||||
} catch { Write-Host "Hinweis: Eintrag in Rippy ggf. von Hand loeschen (Einstellungen -> Worker)." }
|
||||
Set-Location (Split-Path `$PSScriptRoot -Parent)
|
||||
Remove-Item -Recurse -Force `$PSScriptRoot
|
||||
Write-Host "Rippy-Worker deinstalliert." -ForegroundColor Green
|
||||
"@
|
||||
Set-Content -Path "uninstall.ps1" -Value $uninstall -Encoding ASCII
|
||||
Write-Host "uninstall.ps1 erzeugt."
|
||||
|
||||
# 8. Optional: Autostart bei Anmeldung (mit Tray)
|
||||
if ($Autostart) {
|
||||
schtasks /create /f /tn "RippyWorker" /tr "`"$ziel\start-worker.bat`"" /sc onlogon | Out-Null
|
||||
Write-Host "Autostart-Aufgabe 'RippyWorker' registriert (bei Anmeldung)."
|
||||
schtasks /create /f /tn "RippyWorker" /tr "`"$ziel\start-tray.bat`"" /sc onlogon | Out-Null
|
||||
Write-Host "Autostart-Aufgabe 'RippyWorker' registriert (Tray bei Anmeldung)."
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "FERTIG. Worker starten mit: $ziel\start-worker.bat" -ForegroundColor Green
|
||||
Write-Host "Er erscheint danach in Rippy unter Einstellungen -> Worker als '$WorkerName'."
|
||||
Write-Host "FERTIG." -ForegroundColor Green
|
||||
Write-Host " Starten (mit Tray-Symbol): $ziel\start-tray.bat"
|
||||
Write-Host " Starten (Konsole/Debug): $ziel\start-worker.bat"
|
||||
Write-Host " Deinstallieren: $ziel\uninstall.ps1"
|
||||
Write-Host "Der Worker erscheint in Rippy unter Einstellungen -> Worker als '$WorkerName'."
|
||||
|
||||
Reference in New Issue
Block a user