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.
La forma de Moonpool
Sección titulada «La forma de Moonpool»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:
{ "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:
{ "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" }}Límites
Sección titulada «Límites»- Mantén Moonpool en ejecución. Al cerrar su ventana se sale de él de forma predeterminada, y en Windows salir detiene todas las apps que inició. Activa Cerrar a la bandeja para ocultar la ventana en su lugar; consulta Bandeja, cerrar y minimizar.
- Moonpool no reinicia un script que falla, ni lo inicia por sí solo al iniciar sesión en Windows. Consulta Iniciar un script o un servidor de desarrollo automáticamente al iniciar sesión en Windows.
- Evita las comillas dobles anidadas en
command: el envoltoriocmd /clas estropea.
Véase también
Sección titulada «Véase también»- Tipos de app: cómo se vigilan las apps
cliyweb. - Detener y reiniciar
- Ejemplos
- Registros: dónde se conserva la salida de las sesiones.
Moonpool es software gratuito de FasterDB