Aller au contenu

Garder un script Python en cours d'exécution en arrière-plan sous Windows

Un script Python lancé depuis une fenêtre de console s’arrête quand vous fermez cette fenêtre. Les solutions habituelles sous Windows sont pythonw.exe (le même interpréteur sans fenêtre de console, donc la sortie ne va nulle part), Start-Process pythonw -ArgumentList worker.py pour le lancer détaché, ou une tâche planifiée pour ce qui doit s’exécuter à l’ouverture de session ou selon une minuterie. Chacune vous laisse chercher le processus dans le Gestionnaire des tâches quand vous voulez le supprimer.

Moonpool exécute la commande dans son propre onglet de terminal : vous gardez la sortie et un bouton Arrêter sans fenêtre de console à vous. Pour un script qui tourne jusqu’à ce que vous l’arrêtiez, utilisez une app cli. -u force Python à vider sa sortie immédiatement, pour que l’onglet l’affiche en direct :

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

Lancez-la et cliquez sur le nom de l’app pour suivre sa sortie. Une app cli compte comme en cours d’exécution tant que sa commande tourne, et devient grise quand le script se termine, avec [process exited] laissé dans l’onglet. Arrêter met fin au script et à tout ce qu’il a démarré. Utiliser le python.exe de l’environnement virtuel par son chemin évite toute étape d’activation.

Si le script sert du HTTP (Flask, FastAPI, python -m http.server), faites-en une app web pour que l’état « en cours » suive son port :

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 est un logiciel gratuit de FasterDB