Как держать скрипт Python запущенным в фоне в Windows
Скрипт Python, запущенный из окна консоли, останавливается при закрытии этого окна. Обычные
способы в Windows: pythonw.exe (тот же интерпретатор без окна консоли, поэтому вывод
никуда не попадает), Start-Process pythonw -ArgumentList worker.py для отсоединённого запуска
или запланированная задача для того, что должно работать при входе или по таймеру. Во всех
случаях, когда процесс нужно завершить, его приходится искать в диспетчере задач.
Способ Moonpool
Заголовок раздела «Способ Moonpool»Moonpool запускает команду в собственной вкладке терминала, поэтому у вас остаются вывод и кнопка
«Остановить» без отдельного окна консоли. Для скрипта, который работает, пока вы его не
остановите, используйте приложение типа cli. Параметр -u заставляет Python сразу сбрасывать
вывод, чтобы вкладка показывала его в реальном времени:
{ "id": "worker", "name": "Queue worker", "group": "Scripts", "type": "cli", "cwd": "C:\\code\\worker", "command": ".venv\\Scripts\\python.exe -u worker.py"}Запустите приложение и щёлкните по его названию, чтобы смотреть вывод. Приложение cli
считается работающим, пока выполняется его команда, и становится серым, когда скрипт завершается,
а во вкладке остаётся [process exited]. Кнопка Остановить завершает скрипт и всё, что он
запустил. Если указывать python.exe виртуального окружения по пути, шаг активации не нужен.
Если скрипт обслуживает HTTP (Flask, FastAPI, python -m http.server), сделайте его приложением
типа web, чтобы состояние «работает» определялось по его порту:
{ "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 запущенным. По умолчанию закрытие его окна завершает работу программы, а в Windows завершение работы останавливает все запущенные им приложения. Включите Закрывать в трей, чтобы окно только скрывалось; см. Трей, закрытие и сворачивание.
- Moonpool не перезапускает скрипт, который аварийно завершился, и сам не запускает его при входе в Windows. См. Автоматический запуск скрипта или сервера разработки при входе в Windows.
- Избегайте вложенных двойных кавычек в
command: обёрткаcmd /cих искажает.
См. также
Заголовок раздела «См. также»- Типы приложений: как отслеживаются приложения
cliиweb. - Остановка и перезапуск
- Примеры
- Журналы: где хранится вывод сеансов.
Moonpool: бесплатное программное обеспечение от FasterDB