From 6a43412406b8f4867991f91b5e2acdc58a8e7e9a Mon Sep 17 00:00:00 2001 From: RogerWork Date: Fri, 13 Mar 2026 18:28:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AE=9A=E6=97=B6=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- command.txt | 3 +++ dingxin_toolbox_drf/__init__.py | 6 +++++- dingxin_toolbox_drf/celery.py | 23 +++++++++++++++++++++++ dingxin_toolbox_drf/settings.py | 17 ++++++++++++++++- reqirement.txt | Bin 3022 -> 3588 bytes reqirement_linux.txt | Bin 2966 -> 3532 bytes update/tasks.py | 13 +++++++++++++ update/utils/client_util_custom.py | 2 +- update/views.py | 8 ++++---- 9 files changed, 65 insertions(+), 7 deletions(-) create mode 100644 dingxin_toolbox_drf/celery.py create mode 100644 update/tasks.py diff --git a/command.txt b/command.txt index 2426192..90525d4 100644 --- a/command.txt +++ b/command.txt @@ -1 +1,4 @@ py .\manage.py runserver 0.0.0.0:8000 +celery -A dingxin_toolbox_drf worker -l info -P solo # windows +celery -A dingxin_toolbox_drf worker -l info # linux +celery -A dingxin_toolbox_drf beat -l info \ No newline at end of file diff --git a/dingxin_toolbox_drf/__init__.py b/dingxin_toolbox_drf/__init__.py index c45523b..8dd74d1 100644 --- a/dingxin_toolbox_drf/__init__.py +++ b/dingxin_toolbox_drf/__init__.py @@ -1,2 +1,6 @@ import pymysql -pymysql.install_as_MySQLdb() \ No newline at end of file +from .celery import app as celery_app + +pymysql.install_as_MySQLdb() + +__all__ = ('celery_app',) \ No newline at end of file diff --git a/dingxin_toolbox_drf/celery.py b/dingxin_toolbox_drf/celery.py new file mode 100644 index 0000000..50ddf56 --- /dev/null +++ b/dingxin_toolbox_drf/celery.py @@ -0,0 +1,23 @@ +import os +from celery import Celery +from celery.schedules import crontab +from django.conf import settings + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dingxin_toolbox_drf.settings') + +# 创建 Celery实例 +app = Celery('dingxin_toolbox_drf') + +# 加载配置文件中的Celery配置 +app.config_from_object('django.conf:settings', namespace='CELERY') + +# 自动发现并添加任务 +app.autodiscover_tasks() + +# app.conf.beat_schedule = { +# 'update_client_task': { +# 'task': 'update.tasks.update_client', +# # 'schedule': crontab(hour='*'), +# 'schedule': 30, +# }, +# } diff --git a/dingxin_toolbox_drf/settings.py b/dingxin_toolbox_drf/settings.py index c85e740..8b5d511 100644 --- a/dingxin_toolbox_drf/settings.py +++ b/dingxin_toolbox_drf/settings.py @@ -145,7 +145,9 @@ INSTALLED_APPS = [ 'mock', 'dspt_api', 'product', - 'config' + 'config', + 'django_celery_beat', # 定时任务 + 'django_celery_results', # 定时任务 ] MIDDLEWARE = [ @@ -328,3 +330,16 @@ CHANNEL_LAYERS = { } } } + +# Celery 定时任务 +CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler' +CELERY_BROKER_URL = f"redis://{CONFIG[ENV]['REDIS_IP']}:6379/0" +CELERY_RESULT_BACKEND = "django-db" +CELERY_TIMEZONE = "Asia/Shanghai" +CELERY_ENABLE_UTC = False +CELERY_RESULT_EXTENDED = True # 启用后才会记录 task_name、date_started 等字段 +CELERY_TASK_TRACK_STARTED = True # 记录任务开始时间 +CELERY_ACCEPT_CONTENT = ['json'] +CELERY_TASK_SERIALIZER = 'json' +CELERY_RESULT_SERIALIZER = 'json' +CELERY_TASK_RESULT_EXPIRES = 3600 \ No newline at end of file diff --git a/reqirement.txt b/reqirement.txt index 73b0d5fb2ea704e93edeabfa0db1872fac4bb1de..0be823e6fc40eb9bcb9d8d75c630575e47b3e7cf 100644 GIT binary patch delta 488 zcmaKpPfNo<5XE0i1PzEM@lY?K;Au5~OtlA5k=|P9)l)HP6}2X!Td;zN;5S%2dg#fk zknbV%8~J7%v3QWMyGiyp^WMySt-h{(ww#Rt`nbag3Yz;ZzwU9sC%`r$)VT-ci8DX9 zRUjwSvp~j>OTroj-vkc{?s6sO(0y9(<2P-}h%=HxMI;)M(tNm+XGJNEA<{}R;mwp- zf={I@#^t!6#w@9r@1e@~UxcQ^8?uj#&v`1G^N%>|SucA>m0XCwa$RH=oOY(m5~V9c zhU&_y*sPn(Ynt5Ktj*e!GGpF`ws-sG*n4qn(l2qLSy5`$1(6k$%L{MLNFDUQ)b%QAK@Rz;jdoK}Q{dxN@(iTxdyXPNoe&No~ZRtf+B delta 49 zcmV-10M7q}9L^W8OaZfa0sH}zqyu!5P6WJ@-UTqTR0etjv-}By0h5{wnv-%2Bmp?H HnG9wVKU&UOA6?vG2nEgkmS6YS;}c*L5gOcs;>ekw ztL4ZDbu5rFq(@jI=bPXm!ELVC?7L5^UHqm^7;#QgsE9;UQkr-7>se7sV}PWTjCnI9 z7Ez_r72`5oQe&1>%=b{{`!7P%;SJeG#%DYgF8D{Bb*z`2gHkTUU%56?3r;)JW{J|3 z0Yi0ZRctm)>K&WRTlZ(}Ntt!thPHRR#hdry`qD3Pp;=L4)di6i6iW*uXE~?UKJEQ9 vNm?10aiv!mWrb7D<_w28LCZ3BE>=aHM4VQHn0u4Dv6)o1T%N^7_1gIcawb-A delta 49 zcmV-10M7r+8