[Checkins] SVN: zc.catalogqueue/trunk/src/zc/catalogqueue/queue.
Made the computation of length lazy.
Jim Fulton
jim at zope.com
Sat May 10 13:07:10 EDT 2008
Log message for revision 86615:
Made the computation of length lazy.
Changed:
U zc.catalogqueue/trunk/src/zc/catalogqueue/queue.py
U zc.catalogqueue/trunk/src/zc/catalogqueue/queue.txt
-=-
Modified: zc.catalogqueue/trunk/src/zc/catalogqueue/queue.py
===================================================================
--- zc.catalogqueue/trunk/src/zc/catalogqueue/queue.py 2008-05-10 09:39:48 UTC (rev 86614)
+++ zc.catalogqueue/trunk/src/zc/catalogqueue/queue.py 2008-05-10 17:07:08 UTC (rev 86615)
@@ -33,20 +33,28 @@
lastProcessedTime = None
totalProcessed = 0
- _buckets = 1009 # Maybe configurable someday
-
- def __init__(self):
- self._length = BTrees.Length.Length()
+ def __init__(self, buckets=1009):
+ self._buckets = buckets
self._queues = [
zc.catalogqueue.CatalogEventQueue.CatalogEventQueue()
- for i in range(self._buckets)
+ for i in range(buckets)
]
def __len__(self):
- return self._length()
+ try:
+ return self._length()
+ except AttributeError:
+ return 0
+ def _change_length(self, change):
+ try:
+ length = self._length
+ except AttributeError:
+ length = self._length = BTrees.Length.Length()
+ length.change(change)
+
def _notify(self, id, event):
- self._length.change(
+ self._change_length(
self._queues[hash(id) % self._buckets].update(id, event))
def add(self, id):
@@ -73,7 +81,7 @@
for catalog in catalogs:
catalog.index_doc(id, ob)
done += 1
- self._length.change(-1)
+ self._change_length(-1)
if done >= limit:
break
Modified: zc.catalogqueue/trunk/src/zc/catalogqueue/queue.txt
===================================================================
--- zc.catalogqueue/trunk/src/zc/catalogqueue/queue.txt 2008-05-10 09:39:48 UTC (rev 86614)
+++ zc.catalogqueue/trunk/src/zc/catalogqueue/queue.txt 2008-05-10 17:07:08 UTC (rev 86615)
@@ -7,6 +7,11 @@
>>> import zc.catalogqueue.queue
>>> queue = zc.catalogqueue.queue.CatalogQueue()
+We can pass a queue size. It should be a prime number. The default is
+1009, which is a bit large.
+
+ >>> queue = zc.catalogqueue.queue.CatalogQueue(11)
+
Typically, queues are registered as
zc.catalogqueue.interfaces.ICatalogQueue utilities.
More information about the Checkins
mailing list