From 8a3563766fb2124f5f1f394337610f4f19675d7b Mon Sep 17 00:00:00 2001 From: Samuel Clay Date: Mon, 16 May 2016 17:57:02 -0700 Subject: [PATCH] Reintroducing correct subscriber counts. --- apps/reader/models.py | 1 + apps/rss_feeds/models.py | 17 +++++++++-------- utils/redis_raw_log_middleware.py | 8 ++------ 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/apps/reader/models.py b/apps/reader/models.py index 24e6b2f53..7fc0d2371 100644 --- a/apps/reader/models.py +++ b/apps/reader/models.py @@ -383,6 +383,7 @@ class UserSubscription(models.Model): MActivity.new_feed_subscription(user_id=user.pk, feed_id=feed.pk, feed_title=feed.title) feed.setup_feed_for_premium_subscribers() + feed.count_subscribers() return code, message, us diff --git a/apps/rss_feeds/models.py b/apps/rss_feeds/models.py index ce8835d64..95c7d08fa 100644 --- a/apps/rss_feeds/models.py +++ b/apps/rss_feeds/models.py @@ -676,7 +676,8 @@ class Feed(models.Model): r = redis.Redis(connection_pool=settings.REDIS_FEED_SUB_POOL) total_key = "s:%s" % self.original_feed_id premium_key = "sp:%s" % self.original_feed_id - last_recount = r.zscore(total_key, -1) + last_recount = r.zscore(total_key, -1) # Need to subtract this extra when counting subs + last_recount = r.zscore(premium_key, -1) # Need to subtract this extra when counting subs # Check for expired feeds with no active users who would have triggered a cleanup if last_recount and last_recount > subscriber_expire: @@ -722,18 +723,18 @@ class Feed(models.Model): results = pipeline.execute() - # -1 due to key=-1 signaling counts_converted_to_redis - total += results[0] - active += results[1] - premium += results[2] - active_premium += results[3] + # -1 due to counts_converted_to_redis using key=-1 for last_recount date + total += results[0] - 1 + active += results[1] - 1 + premium += results[2] - 1 + active_premium += results[3] - 1 original_num_subscribers = self.num_subscribers original_active_subs = self.active_subscribers original_premium_subscribers = self.premium_subscribers original_active_premium_subscribers = self.active_premium_subscribers - logging.info(" ---> [%-30s] ~SN~FBCounting subscribers from ~FCredis~FB: ~FMt:~SB~FM%s~SN a:~SB%s~SN p:~SB%s~SN ap:~SB%s" % - (self.title[:30], total, active, premium, active_premium)) + logging.info(" ---> [%-30s] ~SN~FBCounting subscribers from ~FCredis~FB: ~FMt:~SB~FM%s~SN a:~SB%s~SN p:~SB%s~SN ap:~SB%s ~SN~FC%s" % + (self.title[:30], total, active, premium, active_premium, "(%s branches)" % (len(feed_ids)-1) if len(feed_ids)>1 else "")) else: from apps.reader.models import UserSubscription diff --git a/utils/redis_raw_log_middleware.py b/utils/redis_raw_log_middleware.py index cfaf1a8ed..a7d4e159d 100644 --- a/utils/redis_raw_log_middleware.py +++ b/utils/redis_raw_log_middleware.py @@ -9,7 +9,6 @@ class RedisDumpMiddleware(object): return (settings.DEBUG_QUERIES or (hasattr(request, 'activated_segments') and 'db_profiler' in request.activated_segments)) - def process_view(self, request, callback, callback_args, callback_kwargs): if not self.activated(request): return if not getattr(Connection, '_logging', False): @@ -17,7 +16,6 @@ class RedisDumpMiddleware(object): setattr(Connection, '_logging', True) Connection.pack_command = \ self._instrument(Connection.pack_command) - def process_celery(self, profiler): if not self.activated(profiler): return if not getattr(Connection, '_logging', False): @@ -25,7 +23,6 @@ class RedisDumpMiddleware(object): setattr(Connection, '_logging', True) Connection.pack_command = \ self._instrument(Connection.pack_command) - def process_response(self, request, response): # if settings.DEBUG and hasattr(self, 'orig_pack_command'): # # remove instrumentation from redis @@ -33,7 +30,6 @@ class RedisDumpMiddleware(object): # Connection.pack_command = \ # self.orig_pack_command return response - def _instrument(self, original_method): def instrumented_method(*args, **kwargs): message = self.process_message(*args, **kwargs) @@ -49,7 +45,6 @@ class RedisDumpMiddleware(object): }) return result return instrumented_method - def process_message(self, *args, **kwargs): query = [] for a, arg in enumerate(args): @@ -58,4 +53,5 @@ class RedisDumpMiddleware(object): if len(str(arg)) > 100: arg = "[%s bytes]" % len(str(arg)) query.append(str(arg).replace('\n', '')) - return { 'query': ' '.join(query) } \ No newline at end of file + return { 'query': ' '.join(query) } +