From f2df1748ef43c820d49fb71a3c144e512b6ed9eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Sun, 5 Jul 2015 09:38:09 +0200 Subject: [PATCH] Allow polling for changes in watched folder Some underlying file systems might not trigger change events (e.g. mounted remote file systems). Added a feature flag to allow for switching to a (less performant) polling method. --- src/octoprint/server/__init__.py | 8 +++++++- src/octoprint/settings.py | 3 ++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/octoprint/server/__init__.py b/src/octoprint/server/__init__.py index 35586d1d..7839a9bd 100644 --- a/src/octoprint/server/__init__.py +++ b/src/octoprint/server/__init__.py @@ -14,6 +14,7 @@ from flask.ext.babel import Babel, gettext, ngettext from flask.ext.assets import Environment, Bundle from babel import Locale from watchdog.observers import Observer +from watchdog.observers.polling import PollingObserver from collections import defaultdict import os @@ -399,7 +400,12 @@ class Server(): printer.connect(port=port, baudrate=baudrate, profile=printer_profile["id"] if "id" in printer_profile else "_default") # start up watchdogs - observer = Observer() + if s.getBoolean(["feature", "pollWatched"]): + # use less performant polling observer if explicitely configured + observer = PollingObserver() + else: + # use os default + observer = Observer() observer.schedule(util.watchdog.GcodeWatchdogHandler(fileManager, printer), s.getBaseFolder("watched")) observer.start() diff --git a/src/octoprint/settings.py b/src/octoprint/settings.py index 15ca4df9..f5fd85a2 100644 --- a/src/octoprint/settings.py +++ b/src/octoprint/settings.py @@ -142,7 +142,8 @@ default_settings = { "repetierTargetTemp": False, "externalHeatupDetection": True, "supportWait": True, - "keyboardControl": True + "keyboardControl": True, + "pollWatched": False }, "folder": { "uploads": None,