Ir al contenido

Mantener un script de Python en ejecución en segundo plano en Windows

Un script de Python ejecutado desde una ventana de consola se detiene cuando cierras esa ventana. Las soluciones habituales en Windows son pythonw.exe (el mismo intérprete sin ventana de consola, de modo que la salida no va a ninguna parte), Start-Process pythonw -ArgumentList worker.py para iniciarlo desacoplado, o una tarea programada para algo que deba ejecutarse al iniciar sesión o con un temporizador. En todos los casos te toca buscar el proceso en el Administrador de tareas cuando quieres que desaparezca.

Moonpool ejecuta el comando en su propia pestaña de terminal, así que conservas la salida y un botón Detener sin tener una ventana de consola propia. Para un script que se ejecuta hasta que lo detienes, usa una app cli. -u hace que Python vacíe la salida de inmediato para que la pestaña la muestre en vivo:

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

Inicia la app y haz clic en su nombre para ver su salida. Una app cli cuenta como en ejecución mientras su comando se ejecuta, y se pone gris cuando el script termina, con [process exited] (proceso finalizado) en la pestaña. Detener termina el script y todo lo que haya iniciado. Usar el python.exe del entorno virtual por su ruta significa que no hace falta ningún paso de activación.

Si el script sirve HTTP (Flask, FastAPI, python -m http.server), conviértelo en una app web para que en ejecución dependa de su puerto:

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 es software gratuito de FasterDB