From d8de59c3f2352f489eddf3f123924c23fd4d8fe2 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 11 Apr 2024 10:53:39 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20base=20=E5=A2=9E=E5=8A=A0ctask=5Frun?= =?UTF-8?q?=E5=B0=86=E6=99=AE=E9=80=9A=E5=87=BD=E6=95=B0=E8=BD=ACcelery?= =?UTF-8?q?=E6=89=A7=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/utils/tasks.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/apps/utils/tasks.py b/apps/utils/tasks.py index 0a5d36c9..ab09128f 100644 --- a/apps/utils/tasks.py +++ b/apps/utils/tasks.py @@ -4,6 +4,7 @@ from celery import shared_task import logging from django.conf import settings from server.settings import get_sysconfig +import importlib # 实例化myLogger myLogger = logging.getLogger('log') @@ -20,7 +21,6 @@ def send_mail_task(**args): 'recipient_list', [settings.EMAIL_HOST_USER]) send_mail(**args) - class CustomTask(Task): """ 自定义的任务回调 @@ -31,3 +31,12 @@ class CustomTask(Task): myLogger.error(detail) send_mail_task.delay(subject='task_error', message=detail) return super().on_failure(exc, task_id, args, kwargs, einfo) + +@shared_task(base=CustomTask) +def ctask_run(func_str: str, *args, **kwargs): + """通用celery函数/将普通函数转为celery执行/也可直接运行 + """ + module, func = func_str.rsplit(".", 1) + m = importlib.import_module(module) + f = getattr(m, func) + f(*args, **kwargs) \ No newline at end of file