Removes stale data before doing repopulation

This probably is only an issue when there are very few users, like my
test instance
This commit is contained in:
Mouse Reeve 2021-08-02 18:14:44 -07:00
parent 01334b6613
commit df9787dd7a
2 changed files with 14 additions and 1 deletions

View file

@ -65,6 +65,10 @@ class RedisStore(ABC):
pipeline = r.pipeline()
queryset = self.get_objects_for_store(store)
# first, remove everything currently in it
pipeline.delete(store)
# now, add everything back
for obj in queryset[: self.max_length]:
pipeline.zadd(store, self.get_value(obj))

View file

@ -1,5 +1,6 @@
""" store recommended follows in redis """
import math
import logging
from django.dispatch import receiver
from django.db.models import signals, Count, Q
@ -8,6 +9,9 @@ from bookwyrm.redis_store import RedisStore, r
from bookwyrm.tasks import app
logger = logging.getLogger(__name__)
class SuggestedUsers(RedisStore):
"""suggested users for a user"""
@ -84,7 +88,12 @@ class SuggestedUsers(RedisStore):
# annotate users with mutuals and shared book counts
for user_id, rank in values[:5]:
counts = self.get_counts_from_rank(rank)
try:
user = models.User.objects.get(id=user_id)
except models.User.DoesNotExist as err:
# if this happens, the suggestions are janked way up
logger.exception(err)
continue
user.mutuals = counts["mutuals"]
user.shared_books = counts["shared_books"]
results.append(user)