Автоматически скрывать терминал, не убивая запущенный процессPython

Программы на Python
Anonymous
Автоматически скрывать терминал, не убивая запущенный процесс

Сообщение Anonymous »

Меня попросили запустить скрипт Python из планировщика задач Windows.
В моем скрипте Python я в основном буду использовать библиотеку сторожевого таймера, чтобы создать экземпляр и запустить наблюдателя, который будет отслеживать изменения файла в определенном пути к каталогу
file_handlers.py

Код: Выделить всё

import time
import logging

from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler

from elaboration_directory import FILE_PROCESS_DIR

logging.basicConfig()
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)

class FileHandler(FileSystemEventHandler):

def on_created(self, event):
if not event.is_directory:
file_path = event.src_path
logger.info('File added. File path: "%s"' % file_path)

class ElaborationFolderWatcher(object):

def start(self):
event_handler = FileHandler()
observer = Observer()
observer.schedule(event_handler, path=FILE_PROCESS_DIR, recursive=False)
observer.start()
logger.info('Observer: started')

try:
while True:
# keep observer active
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()

if __name__ == '__main__':
logger.info('Python script started')
elaboration_folder_watcher = ElaborationFolderWatcher()
elaboration_folder_watcher.start()
Моя проблема в том, что когда я запускаю сценарий из планировщика задач, открывается терминал, и если я его закрываю, он убивает процесс (и наблюдателей).
Мне нужна команда, которую я могу запустить в пакетном сценарии, позволяющая мне закрыть терминал, не убивая процесс, или, по сути, любое решение, которое одновременно закроет терминал и сохранит активность наблюдателя. Возможно?
Дополнительные примечания:
  • Реализация предназначена для запуска на Windows Server. 2016 или более поздней версии.
  • Изначально я реализовал это с помощью библиотеки pywin32, а именно win32serviceutil.ServiceFramework. В этом случае я установил скрипт service_run.py
    и настроил унаследованный класс ServiceFramework, который запускал ElaborationFolderWatcher при запуске службы, а затем настроил запуск службы при запуске. действительно позволило бы мне обойти эту проблему с «открытым терминалом», поскольку в этом сценарии окно терминала вообще не откроется, НО мне, вероятно, нужно переключиться на выполнение файла Python через скрипт .bat по причине, по которой я' Я не буду здесь объяснять напрямую.


Подробнее здесь: https://stackoverflow.com/questions/787 ... ng-process

Вернуться в «Python»