Initialize Event properly in BaseConsumer
authorPetr Jelinek <git@pjmodos.net>
Thu, 24 Jan 2013 13:04:31 +0000 (14:04 +0100)
committerPetr Jelinek <git@pjmodos.net>
Thu, 24 Jan 2013 13:04:31 +0000 (14:04 +0100)
python/pgq/baseconsumer.py
python/pgq/consumer.py

index 7648a160ee126c1747a6a7e20be2a47e773f1e31..9159106e0465fe6efded6e8e590e15afe7938d95 100644 (file)
@@ -24,8 +24,6 @@ class BaseBatchWalker(object):
      - len() after that
     """
 
-    _event_class = Event
-
     def __init__(self, curs, batch_id, queue_name, fetch_size = 300, consumer_filter = None):
         self.queue_name = queue_name
         self.fetch_size = fetch_size
@@ -36,6 +34,9 @@ class BaseBatchWalker(object):
         self.fetch_status = 0 # 0-not started, 1-in-progress, 2-done
         self.consumer_filter = consumer_filter
 
+    def _make_event(self, queue_name, row):
+        return Event(queue_name, row)
+
     def __iter__(self):
         if self.fetch_status:
             raise Exception("BatchWalker: double fetch? (%d)" % self.fetch_status)
@@ -53,7 +54,7 @@ class BaseBatchWalker(object):
 
             self.length += len(rows)
             for row in rows:
-                ev = self._event_class(self, self.queue_name, row)
+                ev = self._make_event(self.queue_name, row)
                 yield ev
 
             # if less rows than requested, it was final block
index 19fbf5efc5b249a37b9809420ff098eb46877876..3d78105f5bf5d959c6e17db96f779ae00b9c76aa 100644 (file)
@@ -31,12 +31,13 @@ class RetriableBatchWalker(BaseBatchWalker):
     """BatchWalker that returns RetriableEvents
     """
 
-    _event_class = RetriableWalkerEvent
-
     def __init__(self, curs, batch_id, queue_name, fetch_size = 300, consumer_filter = None):
         super(RetriableBatchWalker, self).__init__(self, curs, batch_id, queue_name, fetch_size, consumer_filter)
         self.status_map = {}
 
+    def _make_event(self, queue_name, row):
+        return RetriableWalkerEvent(self, queue_name, row)
+
     def tag_event_done(self, event):
         if event.id in self.status_map:
             del self.status_map[event.id]