fix 500; fix NEODB-SOCIAL-1XT

This commit is contained in:
Your Name 2023-12-28 22:12:07 -05:00 committed by Henri Dickson
parent b2fb8d0d9a
commit c5690ec441
5 changed files with 15 additions and 9 deletions

View file

@ -72,6 +72,7 @@ env = environ.FileAwareEnv(
NEODB_DOWNLOADER_RETRIES=(int, 3), NEODB_DOWNLOADER_RETRIES=(int, 3),
# Disable cron jobs # Disable cron jobs
NEODB_DISABLE_CRON=(bool, False), NEODB_DISABLE_CRON=(bool, False),
NEODB_DISABLE_CRON_JOBS=(list, []),
# INTEGRATED TAKAHE CONFIGURATION # INTEGRATED TAKAHE CONFIGURATION
TAKAHE_DB_URL=(str, "postgres://takahe:takahepass@127.0.0.1:5432/takahe"), TAKAHE_DB_URL=(str, "postgres://takahe:takahepass@127.0.0.1:5432/takahe"),
# Spotify - https://developer.spotify.com/ # Spotify - https://developer.spotify.com/
@ -239,6 +240,7 @@ DOWNLOADER_CACHE_TIMEOUT = env("NEODB_DOWNLOADER_CACHE_TIMEOUT")
DOWNLOADER_RETRIES = env("NEODB_DOWNLOADER_RETRIES") DOWNLOADER_RETRIES = env("NEODB_DOWNLOADER_RETRIES")
DISABLE_CRON = env("NEODB_DISABLE_CRON") DISABLE_CRON = env("NEODB_DISABLE_CRON")
DISABLE_CRON_JOBS = env("NEODB_DISABLE_CRON_JOBS")
FANOUT_LIMIT_DAYS = env("NEODB_FANOUT_LIMIT_DAYS") FANOUT_LIMIT_DAYS = env("NEODB_FANOUT_LIMIT_DAYS")
# ====== USER CONFIGUTRATION END ====== # ====== USER CONFIGUTRATION END ======

View file

@ -5,6 +5,8 @@ from loguru import logger
from rq.job import Job from rq.job import Job
from rq.registry import ScheduledJobRegistry from rq.registry import ScheduledJobRegistry
from boofilsic import settings
class BaseJob: class BaseJob:
interval = timedelta(0) # 0 = disabled, don't set it less than 1 minute interval = timedelta(0) # 0 = disabled, don't set it less than 1 minute
@ -25,7 +27,7 @@ class BaseJob:
@classmethod @classmethod
def schedule(cls): def schedule(cls):
job_id = cls.__name__ 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}") logger.info(f"Skip scheduling job: {job_id}")
return return
logger.info(f"Scheduling job: {job_id} in {cls.interval}") logger.info(f"Scheduling job: {job_id} in {cls.interval}")

View file

@ -33,6 +33,7 @@ x-shared:
NEODB_MASTODON_CLIENT_SCOPE: NEODB_MASTODON_CLIENT_SCOPE:
NEODB_DISABLE_DEFAULT_RELAY: NEODB_DISABLE_DEFAULT_RELAY:
NEODB_DISABLE_CRON: NEODB_DISABLE_CRON:
NEODB_DISABLE_CRON_JOBS:
NEODB_SENTRY_DSN: NEODB_SENTRY_DSN:
TAKAHE_SENTRY_DSN: TAKAHE_SENTRY_DSN:
NEODB_DB_URL: ${NEODB_DB_URL:-postgres://neodb:aubergine@neodb-db/neodb} NEODB_DB_URL: ${NEODB_DB_URL:-postgres://neodb:aubergine@neodb-db/neodb}

View file

@ -62,7 +62,7 @@ def user_tag_edit(request):
tag.delete() tag.delete()
msg.info(request.user, _("标签已删除")) msg.info(request.user, _("标签已删除"))
return redirect( return redirect(
reverse("journal:user_tag_list", args=[request.user.mastodon_acct]) reverse("journal:user_tag_list", args=[request.user.username])
) )
elif ( elif (
tag_title != tag.title tag_title != tag.title
@ -80,7 +80,7 @@ def user_tag_edit(request):
return redirect( return redirect(
reverse( reverse(
"journal:user_tag_member_list", "journal:user_tag_member_list",
args=[request.user.mastodon_acct, tag.title], args=[request.user.username, tag.title],
) )
) )
raise BadRequest() raise BadRequest()

View file

@ -6,24 +6,25 @@ from django.utils import timezone
from loguru import logger from loguru import logger
from common.models import BaseJob, JobManager from common.models import BaseJob, JobManager
from users.models import Preference, User from users.models import User
@JobManager.register @JobManager.register
class MastodonUserSync(BaseJob): class MastodonUserSync(BaseJob):
interval = timedelta(hours=0) batch = 8
interval_hours = 3
interval = timedelta(hours=interval_hours)
def run(self): def run(self):
logger.info("Mastodon User Sync start.") logger.info("Mastodon User Sync start.")
count = 0
ttl_hours = 12
qs = ( qs = (
User.objects.exclude( User.objects.exclude(
preference__mastodon_skip_userinfo=True, preference__mastodon_skip_userinfo=True,
preference__mastodon_skip_relationship=True, preference__mastodon_skip_relationship=True,
) )
.filter( .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( .filter(
username__isnull=False, username__isnull=False,
@ -32,6 +33,6 @@ class MastodonUserSync(BaseJob):
.exclude(mastodon_token__isnull=True) .exclude(mastodon_token__isnull=True)
.exclude(mastodon_token="") .exclude(mastodon_token="")
) )
for user in qs: for user in qs.iterator():
user.refresh_mastodon_data() user.refresh_mastodon_data()
logger.info(f"Mastodon User Sync finished.") logger.info(f"Mastodon User Sync finished.")