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.
This commit is contained in:
Gina Häußge 2015-07-05 09:38:09 +02:00
parent 19b4a0f403
commit f2df1748ef
2 changed files with 9 additions and 2 deletions

View file

@ -14,6 +14,7 @@ from flask.ext.babel import Babel, gettext, ngettext
from flask.ext.assets import Environment, Bundle from flask.ext.assets import Environment, Bundle
from babel import Locale from babel import Locale
from watchdog.observers import Observer from watchdog.observers import Observer
from watchdog.observers.polling import PollingObserver
from collections import defaultdict from collections import defaultdict
import os 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") printer.connect(port=port, baudrate=baudrate, profile=printer_profile["id"] if "id" in printer_profile else "_default")
# start up watchdogs # 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.schedule(util.watchdog.GcodeWatchdogHandler(fileManager, printer), s.getBaseFolder("watched"))
observer.start() observer.start()

View file

@ -142,7 +142,8 @@ default_settings = {
"repetierTargetTemp": False, "repetierTargetTemp": False,
"externalHeatupDetection": True, "externalHeatupDetection": True,
"supportWait": True, "supportWait": True,
"keyboardControl": True "keyboardControl": True,
"pollWatched": False
}, },
"folder": { "folder": {
"uploads": None, "uploads": None,