class Watcher(object): def __init__(self, logger): os.chdir("../") self.programPath = os.getcwd() os.chdir("app") self.__fs = FileSystem(".") self.__utils = Utils() self.__config = Config(fileSystem=self.__fs) self.__db = None self.__controller = None self.__feeder = None self.__webServer = None self.__logger = logger self.__configWatcher = None self.__stompClient = None dbName = self.__config.watcher.get("db", "sqlite") sys.path.insert(0, "../db/%s" % dbName) Database = __import__(dbName).Database dbFileName = self.__config.watcher.get("dbFile", "queue.db") print "Starting file watcher..." #------------------------ self.__db = Database(dbFileName) self.__controller = Controller(self.__db, self.__fs, self.__config, \ FileWatcher, WatchDirectory, update=False) #self.__controller.configChanged(config) #self.__config.addReloadWatcher(self.__controller.configChanged) if self.__config.messaging.enabled: self.__stompClient = StompClient(self.__config, self.__utils) def stompListener(file, eventTime, eventName, isDir): if not isDir: try: self.__stompClient.queueUpdate(file, eventName) except Exception, e: msg = "ERROR in stompClient.queueUpdate('%s', '%s) - '%s'" print msg % (file, eventName, str(e)) self.__controller.addListener(stompListener) ## Log events def logCallback(file, eventTime, eventName, isDir): tStr = time.strftime("%Y%m%dT%H:%M:%S", time.localtime(eventTime)) print "%s \t%s \t%s \t%s" % (tStr, eventName, isDir, file) self.__controller.addListener(logCallback) ## self.__configWatcher = FileWatcher(self.__config.configFile, self.__fs) self.__configWatcher.startWatching() def configChanged(file, eventName, **kwargs): #file=path, eventTime=eventTime, eventName=eventName, isDir=isDir, walk=False if eventName!="del" and file==self.__config.configFile: print "configChanged - reloading" self.__config.reload() self.__controller.configChanged(self.__config) self.__configWatcher.addListener(configChanged) self.__feeder = Feeder(self.__utils, self.__controller) feedservice = self.__config.watcher.get("feedservice", {}) self.host = feedservice.get("host", "*") self.port = feedservice.get("port", 9000) s = webServe(self.host, self.port, self.__feeder) self.__webServer = s
class Watcher(object): def __init__(self, logger): os.chdir("../") self.programPath = os.getcwd() os.chdir("app") self.__fs = FileSystem(".") self.__utils = Utils() self.__config = Config(fileSystem=self.__fs) self.__db = None self.__controller = None self.__feeder = None self.__webServerShutdownMethod = None self.__logger = logger self.__configWatcher = None dbName = self.__config.watcher.get("db", "sqlite") sys.path.insert(0, "../db/%s" % dbName) Database = __import__(dbName).Database dbFileName = self.__config.watcher.get("dbFile", "queue.db") print "Starting file watcher..." #------------------------ self.__db = Database(dbFileName) self.__controller = Controller(self.__db, self.__fs, self.__config, \ FileWatcher, WatchDirectory, update=False) #self.__controller.configChanged(config) #self.__config.addReloadWatcher(self.__controller.configChanged) self.__configWatcher = FileWatcher(self.__config.configFile, self.__fs) self.__configWatcher.startWatching() def configChanged(file, eventName, **kwargs): #file=path, eventTime=eventTime, eventName=eventName, isDir=isDir, walk=False if eventName!="del" and file==self.__config.configFile: print "configChanged - reloading" self.__config.reload() self.__controller.configChanged(self.__config) self.__configWatcher.addListener(configChanged) self.__feeder = Feeder(self.__utils, self.__controller) feedservice = self.__config.watcher.get("feedservice", {}) self.host = feedservice.get("host", "localhost") self.port = feedservice.get("port", 9000) self.__webServerShutdownMethod = webServe(self.host, self.port, self.__feeder) #------------------------ print "host='%s', port=%s" % (self.host, self.port) @property def controller(self): return self.__controller @property def config(self): return self.__config @property def configFile(self): return self.__config.configFile def close(self): print "FileWatcher closing" self.__configWatcher.close() self.__controller.close() self.__webServerShutdownMethod() print "FileWatcher closed" #print self.__controller._getRecordsCount() #print self.queue.getFromDate(0) def __testListener(self, *args, **kwargs): path = kwargs.get("path") eTime = kwargs.get("eventTime") eName = kwargs.get("eventName") isDir = kwargs.get("isDir") print path, eTime, eName, isDir
class Watcher(object): def __init__(self): os.chdir("../") self.programPath = os.getcwd() os.chdir("app") self.__fs = FileSystem(".") self.__utils = Utils() self.__config = Config(fileSystem=self.__fs) self.__dbFullFileame = None self.__db = None self.__controller = None self.__feeder = None self.__webServerShutdownMethod = None self.__watcherProgDir = self.__fs.absPath(".").rstrip("/app") dbName = self.__config.watcher.get("db", "sqlite") sys.path.append("../db/%s" % dbName) Database = __import__(dbName).Database self.__dbFullFileame = self.__config.watcher.get("dbFile", "queue.db") self.__dbFullFileame = self.__fs.absPath(self.__dbFullFileame) #------------------------ stdout = sys.stdout stderr = sys.stderr # Note: must not output any data when running as a windows server. class Writer(object): def write(self, data): #stdout.write("** "+ data) # log pass if self.__config.daemon: w = Writer() sys.stdout = w sys.stderr = w #------------------------ self.__db = Database(self.__dbFullFileame) self.__controller = Controller(self.__db, self.__fs, self.__config, \ FileWatcher, WatchDirectory, update=False, \ globalIgnoreFilter=self.__globalIgnoreFilter) #self.__controller.configChanged(config) #self.__config.addReloadWatcher(self.__controller.configChanged) configFile = self.__fs.absPath(self.__config.configFile) configWatcher = FileWatcher(configFile, self.__fs) configWatcher.startWatching() def configChanged(file, eventName, **kwargs): #file=path, eventTime=eventTime, eventName=eventName, isDir=isDir, walk=False if eventName!="del" and file==self.__config.configFile: print "configChanged - reloading" self.__config.reload() self.__controller.configChanged(self.__config) configWatcher.addListener(configChanged) self.__feeder = Feeder(self.__utils, self.__controller) feedservice = self.__config.watcher.get("feedservice", {}) host = feedservice.get("host", "localhost") port = feedservice.get("port", 9000) self.__webServerShutdownMethod = webServe(host, port, self.__feeder) #------------------------ print "host='%s', port=%s" % (host, port) print "Press enter to exit..." raw_input() configWatcher.close() self.__controller.close() self.__webServerShutdownMethod() #print self.__controller._getRecordsCount() #print self.queue.getFromDate(0) sys.stdout = stdout sys.stderr = stderr def __globalIgnoreFilter(self, fullFile): if fullFile==self.__dbFullFileame or fullFile.startswith(self.__watcherProgDir): return True return False def __testListener(self, *args, **kwargs): path = kwargs.get("path") eTime = kwargs.get("eventTime") eName = kwargs.get("eventName") isDir = kwargs.get("isDir") print path, eTime, eName, isDir