Salta ai contenuti

Mantieni in esecuzione in background uno script Python su Windows

Uno script Python eseguito da una finestra della console si ferma quando chiudi quella finestra. Le soluzioni abituali su Windows sono pythonw.exe (lo stesso interprete senza finestra della console, quindi l’output non va da nessuna parte), Start-Process pythonw -ArgumentList worker.py per avviarlo staccato, oppure un’attività pianificata per ciò che deve partire all’accesso o a intervalli. Con ciascuna, quando vuoi fermarlo devi cercare il processo in Gestione attività.

Moonpool esegue il comando in una propria scheda del terminale, quindi hai l’output e un pulsante Arresta senza una finestra della console tua. Per uno script che gira finché non lo arresti, usa un’app cli. -u fa sì che Python scriva subito l’output, così la scheda lo mostra in tempo reale:

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

Avviala e fai clic sul nome dell’app per vederne l’output. Un’app cli risulta in esecuzione finché il suo comando è attivo e diventa grigia quando lo script termina, con [process exited] lasciato nella scheda. Arresta termina lo script e tutto ciò che ha avviato. Usando il python.exe dell’ambiente virtuale tramite il suo percorso non serve alcuna attivazione.

Se lo script serve HTTP (Flask, FastAPI, python -m http.server), rendilo un’app web così che lo stato In esecuzione segua la sua porta:

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 è software gratuito di FasterDB