Reintroducing correct subscriber counts.

This commit is contained in:
Samuel Clay 2016-05-16 17:57:02 -07:00
parent fda1bd72f8
commit 8a3563766f
3 changed files with 12 additions and 14 deletions

View file

@ -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

View file

@ -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

View file

@ -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) }
return { 'query': ' '.join(query) }