Pular para o conteúdo

Manter um script Python rodando em segundo plano no Windows

Um script Python executado em uma janela de console para quando você fecha essa janela. As soluções usuais no Windows são o pythonw.exe (o mesmo interpretador sem janela de console, então a saída não vai para lugar nenhum), Start-Process pythonw -ArgumentList worker.py para iniciá-lo desacoplado, ou uma tarefa agendada para algo que deva rodar no login ou em um intervalo. Em todos os casos, você precisa achar o processo no Gerenciador de Tarefas quando quiser encerrá-lo.

O Moonpool executa o comando em sua própria aba de terminal, então você mantém a saída e um botão Parar sem ter uma janela de console própria. Para um script que roda até você pará-lo, use um app cli. O -u faz o Python descarregar a saída imediatamente, para a aba mostrá-la ao vivo:

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

Inicie-o e clique no nome do app para ver a saída. Um app cli conta como em execução enquanto o comando roda e fica cinza quando o script termina, com [process exited] (processo encerrado) na aba. Parar encerra o script e tudo o que ele iniciou. Usar o python.exe do ambiente virtual pelo caminho significa que não é preciso nenhum passo de ativação.

Se o script serve HTTP (Flask, FastAPI, python -m http.server), torne-o um app web para que “em execução” acompanhe a porta dele:

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" }
}

O Moonpool é um software gratuito da FasterDB