From 0c8ce0ce27cd6b1e7bbf10189c4fb7672a4e73ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BC=BA?= <1206709430@qq.com> Date: Mon, 18 Dec 2023 18:14:18 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0celery.py=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E9=87=8D=E8=AF=95=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/application/celery.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/backend/application/celery.py b/backend/application/celery.py index dbf6fde..d57b92a 100644 --- a/backend/application/celery.py +++ b/backend/application/celery.py @@ -1,9 +1,11 @@ +import functools import os os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'application.settings') from django.conf import settings from celery import platforms + # 租户模式 if "django_tenants" in settings.INSTALLED_APPS: from tenant_schemas_celery.app import CeleryApp as TenantAwareCeleryApp @@ -16,3 +18,23 @@ else: app.config_from_object('django.conf:settings') app.autodiscover_tasks(lambda: settings.INSTALLED_APPS) platforms.C_FORCE_ROOT = True + + +def retry_base_task_error(): + """ + celery 失败重试装饰器 + :return: + """ + + def wraps(func): + @app.task(bind=True, retry_delay=180, max_retries=3) + @functools.wraps(func) + def wrapper(self, *args, **kwargs): + try: + return func(*args, **kwargs) + except Exception as exc: + raise self.retry(exc=exc) + + return wrapper + + return wraps