From 7fd9d1ea4d6362ee1c0a721c643cfc6f6e532992 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 6 Aug 2014 16:12:45 +0200 Subject: [PATCH] [FIX] Make watchdog python module optional --- openerp/service/server.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/openerp/service/server.py b/openerp/service/server.py index 9989488bc7a..23317a72ccd 100644 --- a/openerp/service/server.py +++ b/openerp/service/server.py @@ -41,6 +41,13 @@ from openerp.tools.misc import stripped_sys_argv, dumpstacks _logger = logging.getLogger(__name__) +try: + import watchdog + from watchdog.observers import Observer + from watchdog.events import FileCreatedEvent, FileModifiedEvent +except ImportError: + watchdog = None + SLEEP_INTERVAL = 60 # 1 min #---------------------------------------------------------- @@ -109,16 +116,12 @@ class ThreadedWSGIServerReloadable(LoggingBaseWSGIServerMixIn, werkzeug.serving. #---------------------------------------------------------- class FSWatcher(object): def __init__(self): - # TODO: check if debian package is available - from watchdog.observers import Observer self.observer = Observer() for path in openerp.modules.module.ad_paths: _logger.info('Watching addons folder %s', path) self.observer.schedule(self, path, recursive=True) def dispatch(self, event): - # TODO: check if debian package is available - from watchdog.events import FileCreatedEvent, FileModifiedEvent if isinstance(event, (FileCreatedEvent, FileModifiedEvent)): if not event.is_directory: path = event.src_path @@ -881,14 +884,21 @@ def start(preload=None, stop=False): else: server = ThreadedServer(openerp.service.wsgi_server.application) - watcher = FSWatcher() - watcher.start() + if watchdog: + watcher = FSWatcher() + watcher.start() + else: + intro = "'watchdog' module not installed." + _logger.warning("%s Asset Bundles automatic cache invalidation disabled." % intro) + if config['dev_mode']: + _logger.warning("%s Code autoreload feature is disabled" % intro) rc = server.run(preload, stop) # like the legend of the phoenix, all ends with beginnings if getattr(openerp, 'phoenix', False): - watcher.stop() + if watchdog: + watcher.stop() _reexec() return rc if rc else 0