def __init__(self, ix, poolclass=None, timeout=0.0, delay=0.1, _lk=True, limitmb=128, docbase=0, codec=None, compound=True, **kwargs): # Lock the index self.writelock = None if _lk: self.writelock = ix.lock("WRITELOCK") if not try_for( self.writelock.acquire, timeout=timeout, delay=delay): raise LockError if codec is None: from whoosh.codec import default_codec codec = default_codec() self.codec = codec # Get info from the index self.storage = ix.storage self.indexname = ix.indexname info = ix._read_toc() self.generation = info.generation + 1 self.schema = info.schema self.segments = info.segments self.docnum = self.docbase = docbase self._setup_doc_offsets() # Internals self._tempstorage = self.storage.temp_storage("%s.tmp" % self.indexname) newsegment = codec.new_segment(self.storage, self.indexname) self.newsegment = newsegment self.compound = compound and newsegment.should_assemble() self.is_closed = False self._added = False self.pool = PostingPool(self._tempstorage, self.newsegment, limitmb=limitmb) # Set up writers self.perdocwriter = codec.per_document_writer(self.storage, newsegment) self.fieldwriter = codec.field_writer(self.storage, newsegment) self.merge = True self.optimize = False self.mergetype = None
def __init__(self, ix, poolclass=None, timeout=0.0, delay=0.1, _lk=True, limitmb=128, docbase=0, codec=None, compound=True, **kwargs): # Lock the index self.writelock = None if _lk: self.writelock = ix.lock("WRITELOCK") if not try_for(self.writelock.acquire, timeout=timeout, delay=delay): raise LockError if codec is None: from whoosh.codec import default_codec codec = default_codec() self.codec = codec # Get info from the index self.storage = ix.storage self.indexname = ix.indexname info = ix._read_toc() self.generation = info.generation + 1 self.schema = info.schema self.segments = info.segments self.docnum = self.docbase = docbase self._setup_doc_offsets() # Internals self._tempstorage = self.storage.temp_storage("%s.tmp" % self.indexname) newsegment = codec.new_segment(self.storage, self.indexname) self.newsegment = newsegment self.compound = compound and newsegment.should_assemble() self.is_closed = False self._added = False self.pool = PostingPool(self._tempstorage, self.newsegment, limitmb=limitmb) # Set up writers self.perdocwriter = codec.per_document_writer(self.storage, newsegment) self.fieldwriter = codec.field_writer(self.storage, newsegment) self.merge = True self.optimize = False self.mergetype = None
def fn(): lock2 = st.lock("testlock") gotit = try_for(lock2.acquire, 1.0, 0.1) if gotit: result.append(True) lock2.release()