В моем скрипте 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