From c5690ec441f4315710fadc5d04f8d1a9d13947db Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 28 Dec 2023 22:12:07 -0500 Subject: [PATCH] fix 500; fix NEODB-SOCIAL-1XT --- boofilsic/settings.py | 2 ++ common/models.py | 4 +++- compose.yml | 1 + journal/views/tag.py | 4 ++-- users/jobs/sync.py | 13 +++++++------ 5 files changed, 15 insertions(+), 9 deletions(-) diff --git a/boofilsic/settings.py b/boofilsic/settings.py index b8fcfa26..b96466f3 100644 --- a/boofilsic/settings.py +++ b/boofilsic/settings.py @@ -72,6 +72,7 @@ env = environ.FileAwareEnv( NEODB_DOWNLOADER_RETRIES=(int, 3), # Disable cron jobs NEODB_DISABLE_CRON=(bool, False), + NEODB_DISABLE_CRON_JOBS=(list, []), # INTEGRATED TAKAHE CONFIGURATION TAKAHE_DB_URL=(str, "postgres://takahe:takahepass@127.0.0.1:5432/takahe"), # Spotify - https://developer.spotify.com/ @@ -239,6 +240,7 @@ DOWNLOADER_CACHE_TIMEOUT = env("NEODB_DOWNLOADER_CACHE_TIMEOUT") DOWNLOADER_RETRIES = env("NEODB_DOWNLOADER_RETRIES") DISABLE_CRON = env("NEODB_DISABLE_CRON") +DISABLE_CRON_JOBS = env("NEODB_DISABLE_CRON_JOBS") FANOUT_LIMIT_DAYS = env("NEODB_FANOUT_LIMIT_DAYS") # ====== USER CONFIGUTRATION END ====== diff --git a/common/models.py b/common/models.py index f10ef4d3..d4324674 100644 --- a/common/models.py +++ b/common/models.py @@ -5,6 +5,8 @@ from loguru import logger from rq.job import Job from rq.registry import ScheduledJobRegistry +from boofilsic import settings + class BaseJob: interval = timedelta(0) # 0 = disabled, don't set it less than 1 minute @@ -25,7 +27,7 @@ class BaseJob: @classmethod def schedule(cls): job_id = cls.__name__ - if cls.interval <= timedelta(0): + if cls.interval <= timedelta(0) or job_id in settings.DISABLE_CRON_JOBS: logger.info(f"Skip scheduling job: {job_id}") return logger.info(f"Scheduling job: {job_id} in {cls.interval}") diff --git a/compose.yml b/compose.yml index 258bec4b..b59b1d79 100644 --- a/compose.yml +++ b/compose.yml @@ -33,6 +33,7 @@ x-shared: NEODB_MASTODON_CLIENT_SCOPE: NEODB_DISABLE_DEFAULT_RELAY: NEODB_DISABLE_CRON: + NEODB_DISABLE_CRON_JOBS: NEODB_SENTRY_DSN: TAKAHE_SENTRY_DSN: NEODB_DB_URL: ${NEODB_DB_URL:-postgres://neodb:aubergine@neodb-db/neodb} diff --git a/journal/views/tag.py b/journal/views/tag.py index 13ba2d25..7e83c6ad 100644 --- a/journal/views/tag.py +++ b/journal/views/tag.py @@ -62,7 +62,7 @@ def user_tag_edit(request): tag.delete() msg.info(request.user, _("标签已删除")) return redirect( - reverse("journal:user_tag_list", args=[request.user.mastodon_acct]) + reverse("journal:user_tag_list", args=[request.user.username]) ) elif ( tag_title != tag.title @@ -80,7 +80,7 @@ def user_tag_edit(request): return redirect( reverse( "journal:user_tag_member_list", - args=[request.user.mastodon_acct, tag.title], + args=[request.user.username, tag.title], ) ) raise BadRequest() diff --git a/users/jobs/sync.py b/users/jobs/sync.py index 8bfd012c..7c557d84 100644 --- a/users/jobs/sync.py +++ b/users/jobs/sync.py @@ -6,24 +6,25 @@ from django.utils import timezone from loguru import logger from common.models import BaseJob, JobManager -from users.models import Preference, User +from users.models import User @JobManager.register class MastodonUserSync(BaseJob): - interval = timedelta(hours=0) + batch = 8 + interval_hours = 3 + interval = timedelta(hours=interval_hours) def run(self): logger.info("Mastodon User Sync start.") - count = 0 - ttl_hours = 12 qs = ( User.objects.exclude( preference__mastodon_skip_userinfo=True, preference__mastodon_skip_relationship=True, ) .filter( - mastodon_last_refresh__lt=timezone.now() - timedelta(hours=ttl_hours) + mastodon_last_refresh__lt=timezone.now() + - timedelta(hours=self.interval_hours * self.batch) ) .filter( username__isnull=False, @@ -32,6 +33,6 @@ class MastodonUserSync(BaseJob): .exclude(mastodon_token__isnull=True) .exclude(mastodon_token="") ) - for user in qs: + for user in qs.iterator(): user.refresh_mastodon_data() logger.info(f"Mastodon User Sync finished.")