async def reindex(self, obj): index_manager = find_index_manager(obj) if index_manager is None: index_manager = get_adapter(self.request.container, IIndexManager) self.work_index_name = await index_manager.get_index_name() await notify(IndexProgress( self.request, self.context, 0, self.processed)) await self.process_object(obj) await self.flush() if len(self.sub_indexes) > 0: # could cause sub indexes to need to be run through as well. for ob in self.sub_indexes: im = get_adapter(ob, IIndexManager) reindexer = Reindexer( self.utility, ob, response=self.response, force=self.force, log_details=self.log_details, memory_tracking=self.memory_tracking, request=self.request, bulk_size=self.bulk_size, full=self.full, reindex_security=self.reindex_security, mapping_only=self.mapping_only, index_manager=im) reindexer.processed = self.processed reindexer.work_index_name = await im.get_index_name() await reindexer.process_folder(ob) await reindexer.flush() self.processed = reindexer.processed await notify(IndexProgress( self.request, self.context, self.processed, self.processed, completed=True ))
async def reindex(self, obj): self.work_index_name = await self.utility.get_index_name( self.request.container) await notify( IndexProgress(self.request, self.context, 0, self.processed)) await self.process_object(obj) await self.flush() await notify( IndexProgress(self.request, self.context, self.processed, self.processed, completed=True))
async def attempt_flush(self): if self.processed % 500 == 0: self.policy.invalidate_cache() num, _, _ = gc.get_count() gc.collect() if self.memory_tracking: total_memory = round( resource.getrusage(resource.RUSAGE_SELF).ru_maxrss / 1024.0, 1 ) # noqa self.response.write( b"Memory usage: % 2.2f MB, cleaned: %d, total in-memory obs: %d" % (total_memory, num, len(gc.get_objects())) # noqa ) self.response.write( b"Indexing new batch, totals: (%d %d/sec)\n" % (self.indexed, int(self.per_sec())) # noqa ) if len(self.batch) >= self.bulk_size: await notify( IndexProgress( self.context, self.processed, (len(self.existing) + len(self.missing)), request=self.request, ) ) await self.flush()