From f5f8a01131eba36263b7cde498261478a53213a9 Mon Sep 17 00:00:00 2001 From: ibuler Date: Thu, 22 Dec 2022 17:49:07 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BF=AE=E6=94=B9=20celery=20tasks=20?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/ops/signal_handlers.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/apps/ops/signal_handlers.py b/apps/ops/signal_handlers.py index b1d2c39f3..29add5bcb 100644 --- a/apps/ops/signal_handlers.py +++ b/apps/ops/signal_handlers.py @@ -1,17 +1,15 @@ import ast -from celery import signals -from django.db import transaction +from celery import signals from django.core.cache import cache +from django.db import transaction from django.db.models.signals import pre_save -from django.dispatch import receiver from django.db.utils import ProgrammingError +from django.dispatch import receiver from django.utils import translation, timezone from django.utils.translation import gettext as _ -from common.signals import django_ready from common.db.utils import close_old_connections, get_logger - from .celery import app from .models import CeleryTaskExecution, CeleryTask, Job @@ -27,8 +25,12 @@ def on_account_pre_create(sender, instance, **kwargs): instance.version += 1 -@receiver(django_ready) +@receiver(signals.worker_ready) def sync_registered_tasks(*args, **kwargs): + synced = cache.get('synced_registered_tasks', False) + if synced: + return + cache.set('synced_registered_tasks', True, 60) with transaction.atomic(): try: db_tasks = CeleryTask.objects.all()