def createHashWorker(self): while True: file = self.toHash.get(block=True) try: cache().get(file) except (NotInCacheError, ItemVersionMissmatchError): try: file = self.createHash(file) cache().add(file) except IOError as e: self.toHash.put(file) logger.error(file.path + ': ' + str(e)) time.sleep(10) finally: self.toHash.task_done()
def hashFile(self, file, sync=True): try: cachedFile = cache().get(file) if cachedFile.mtime == file.mtime and cachedFile.size == file.size: return cachedFile else: raise FileChangedError() except (NotInCacheError, FileChangedError, ItemVersionMissmatchError): if False == sync: logger.debug('Adding file to Queue: ' + str(file)) self.toHash.put(file) return file else: file = self.createHash(file) cache().add(file) return file