Ga naar inhoud

Een Python-script op de achtergrond laten draaien op Windows

Een Python-script dat vanuit een consolevenster wordt uitgevoerd, stopt zodra je dat venster sluit. De gebruikelijke oplossingen onder Windows zijn pythonw.exe (dezelfde interpreter zonder consolevenster, zodat de uitvoer nergens heen gaat), Start-Process pythonw -ArgumentList worker.py om het losgekoppeld te starten, of een geplande taak voor iets wat bij het aanmelden of op een timer moet draaien. Bij elk daarvan moet je zelf het proces in Taakbeheer opzoeken als je het weg wilt hebben.

Moonpool voert het commando uit in een eigen terminaltabblad, zodat je de uitvoer en een knop Stoppen houdt zonder eigen consolevenster. Gebruik voor een script dat draait tot je het stopt een cli-app. -u laat Python de uitvoer direct wegschrijven, zodat het tabblad die live toont:

apps.json
{
"id": "worker",
"name": "Queue worker",
"group": "Scripts",
"type": "cli",
"cwd": "C:\\code\\worker",
"command": ".venv\\Scripts\\python.exe -u worker.py"
}

Start de app en klik op de naam om de uitvoer te bekijken. Een cli-app telt als Actief zolang het commando draait en wordt grijs wanneer het script eindigt, waarbij [process exited] in het tabblad blijft staan. Stoppen beëindigt het script en alles wat het heeft gestart. Doordat je python.exe van de virtuele omgeving via het pad aanroept, is geen activeringsstap nodig.

Als het script HTTP aanbiedt (Flask, FastAPI, python -m http.server), maak er dan een web-app van, zodat Actief de poort volgt:

apps.json
{
"id": "docs-api",
"name": "Docs API",
"group": "Scripts",
"type": "web",
"cwd": "C:\\code\\docs-api",
"command": ".venv\\Scripts\\python.exe -u app.py",
"port": 8091,
"url": "http://127.0.0.1:8091",
"env": { "PORT": "8091" }
}

Moonpool is gratis software van FasterDB