mirror of
https://github.com/samuelclay/NewsBlur.git
synced 2025-08-31 21:41:33 +00:00
Don't resync stories on new sub if it already has archive subscribers.
This commit is contained in:
parent
3f094cd585
commit
aa84a2c1b1
2 changed files with 17 additions and 6 deletions
|
@ -465,6 +465,11 @@ class UserSubscription(models.Model):
|
||||||
else:
|
else:
|
||||||
message = "This address does not point to an RSS feed or a website with an RSS feed."
|
message = "This address does not point to an RSS feed or a website with an RSS feed."
|
||||||
else:
|
else:
|
||||||
|
allow_skip_resync = False
|
||||||
|
if user.profile.is_archive and feed.active_archive_subscribers != 0:
|
||||||
|
# Skip resync if there are already active archive subscribers
|
||||||
|
allow_skip_resync = True
|
||||||
|
|
||||||
us, subscription_created = cls.objects.get_or_create(
|
us, subscription_created = cls.objects.get_or_create(
|
||||||
feed=feed,
|
feed=feed,
|
||||||
user=user,
|
user=user,
|
||||||
|
@ -499,7 +504,7 @@ class UserSubscription(models.Model):
|
||||||
|
|
||||||
MActivity.new_feed_subscription(user_id=user.pk, feed_id=feed.pk, feed_title=feed.title)
|
MActivity.new_feed_subscription(user_id=user.pk, feed_id=feed.pk, feed_title=feed.title)
|
||||||
|
|
||||||
feed.setup_feed_for_premium_subscribers()
|
feed.setup_feed_for_premium_subscribers(allow_skip_resync=allow_skip_resync)
|
||||||
feed.count_subscribers()
|
feed.count_subscribers()
|
||||||
|
|
||||||
r = redis.Redis(connection_pool=settings.REDIS_PUBSUB_POOL)
|
r = redis.Redis(connection_pool=settings.REDIS_PUBSUB_POOL)
|
||||||
|
|
|
@ -368,8 +368,8 @@ class Feed(models.Model):
|
||||||
self.search_indexed = True
|
self.search_indexed = True
|
||||||
self.save()
|
self.save()
|
||||||
|
|
||||||
def sync_redis(self):
|
def sync_redis(self, allow_skip_resync=False):
|
||||||
return MStory.sync_feed_redis(self.pk)
|
return MStory.sync_feed_redis(self.pk, allow_skip_resync=allow_skip_resync)
|
||||||
|
|
||||||
def expire_redis(self, r=None):
|
def expire_redis(self, r=None):
|
||||||
if not r:
|
if not r:
|
||||||
|
@ -710,10 +710,10 @@ class Feed(models.Model):
|
||||||
for feed in feeds:
|
for feed in feeds:
|
||||||
feed.setup_feed_for_premium_subscribers()
|
feed.setup_feed_for_premium_subscribers()
|
||||||
|
|
||||||
def setup_feed_for_premium_subscribers(self):
|
def setup_feed_for_premium_subscribers(self, allow_skip_resync=False):
|
||||||
self.count_subscribers()
|
self.count_subscribers()
|
||||||
self.set_next_scheduled_update(verbose=settings.DEBUG)
|
self.set_next_scheduled_update(verbose=settings.DEBUG)
|
||||||
self.sync_redis()
|
self.sync_redis(allow_skip_resync=allow_skip_resync)
|
||||||
|
|
||||||
def check_feed_link_for_feed_address(self):
|
def check_feed_link_for_feed_address(self):
|
||||||
@timelimit(10)
|
@timelimit(10)
|
||||||
|
@ -3213,11 +3213,17 @@ class MStory(mongo.Document):
|
||||||
r.zrem("zF:%s" % self.story_feed_id, self.story_hash)
|
r.zrem("zF:%s" % self.story_feed_id, self.story_hash)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def sync_feed_redis(cls, story_feed_id):
|
def sync_feed_redis(cls, story_feed_id, allow_skip_resync=False):
|
||||||
r = redis.Redis(connection_pool=settings.REDIS_STORY_HASH_POOL)
|
r = redis.Redis(connection_pool=settings.REDIS_STORY_HASH_POOL)
|
||||||
feed = Feed.get_by_id(story_feed_id)
|
feed = Feed.get_by_id(story_feed_id)
|
||||||
stories = cls.objects.filter(story_feed_id=story_feed_id, story_date__gte=feed.unread_cutoff)
|
stories = cls.objects.filter(story_feed_id=story_feed_id, story_date__gte=feed.unread_cutoff)
|
||||||
|
|
||||||
|
if allow_skip_resync and stories.count() > 1000:
|
||||||
|
logging.debug(
|
||||||
|
f" ---> [{feed.log_title[:30]}] ~FYSkipping resync of ~SB{stories.count()}~SN stories because it already had archive subscribers"
|
||||||
|
)
|
||||||
|
return
|
||||||
|
|
||||||
# Don't delete redis keys because they take time to rebuild and subs can
|
# Don't delete redis keys because they take time to rebuild and subs can
|
||||||
# be counted incorrectly during that time.
|
# be counted incorrectly during that time.
|
||||||
# r.delete('F:%s' % story_feed_id)
|
# r.delete('F:%s' % story_feed_id)
|
||||||
|
|
Loading…
Add table
Reference in a new issue