summaryrefslogtreecommitdiff
path: root/python/pgq/consumer.py
diff options
context:
space:
mode:
authorMarko Kreen2011-10-04 16:17:40 +0000
committerMarko Kreen2011-10-04 16:54:36 +0000
commit51d66ef35c479484a2bd3126f156c8646c8b7690 (patch)
tree2158d2825afd274949f165aaeefc8abac7ade5c9 /python/pgq/consumer.py
parent248ae45ec44d5d6136512d3aa00f33e0bdc1517e (diff)
pgq.Consumer: pgq_autocommit config params
for setting source side db into autocommit mode
Diffstat (limited to 'python/pgq/consumer.py')
-rw-r--r--python/pgq/consumer.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/python/pgq/consumer.py b/python/pgq/consumer.py
index 777d1f8b..a21f14d1 100644
--- a/python/pgq/consumer.py
+++ b/python/pgq/consumer.py
@@ -113,6 +113,11 @@ class Consumer(skytools.DBScript):
# whether to use cursor to fetch events (0 disables)
#pgq_lazy_fetch = 300
+ # whether to read from source size in autocommmit mode
+ # not compatible with pgq_lazy_fetch
+ # the actual user script on top of pgq.Consumer must also support it
+ #pgq_autocommit = 0
+
# whether to wait for specified number of events, before
# assigning a batch (0 disables)
#pgq_batch_collect_events = 0
@@ -128,6 +133,9 @@ class Consumer(skytools.DBScript):
# by default, use cursor-based fetch
default_lazy_fetch = 300
+ # should reader connection be used in autocommit mode
+ pgq_autocommit = 0
+
# proper variables
consumer_name = None
queue_name = None
@@ -173,10 +181,17 @@ class Consumer(skytools.DBScript):
self.pgq_queue_name = self.queue_name
self.consumer_id = self.consumer_name
+ # set default just once
+ self.pgq_autocommit = self.cf.getint("pgq_autocommit", self.pgq_autocommit)
+ if self.pgq_autocommit and self.pgq_lazy_fetch:
+ raise skytools.UsageError("pgq_autocommit is not compatible with pgq_lazy_fetch")
+ self.set_database_defaults(self.db_name, autocommit = self.pgq_autocommit)
+
def reload(self):
skytools.DBScript.reload(self)
self.pgq_lazy_fetch = self.cf.getint("pgq_lazy_fetch", self.default_lazy_fetch)
+
# set following ones to None if not set
self.pgq_min_count = self.cf.getint("pgq_batch_collect_events", 0) or None
self.pgq_min_interval = self.cf.get("pgq_batch_collect_interval", '') or None