From 6767f0e2e658737b032cbb79137fa51042387859 Mon Sep 17 00:00:00 2001 From: Wu Clan Date: Fri, 11 Jul 2025 21:08:56 +0800 Subject: [PATCH] Update the celery task comment and name (#720) --- backend/app/task/model/scheduler.py | 2 +- backend/app/task/schema/result.py | 3 ++- backend/app/task/schema/scheduler.py | 5 ++++- backend/app/task/tasks/beat.py | 16 ++++++++-------- backend/app/task/tasks/db_log/tasks.py | 4 ++-- backend/app/task/tasks/tasks.py | 13 +++++++++++-- 6 files changed, 28 insertions(+), 15 deletions(-) diff --git a/backend/app/task/model/scheduler.py b/backend/app/task/model/scheduler.py index 50bda2ef..b9be7dbb 100644 --- a/backend/app/task/model/scheduler.py +++ b/backend/app/task/model/scheduler.py @@ -29,7 +29,7 @@ class TaskScheduler(Base): id: Mapped[id_key] = mapped_column(init=False) name: Mapped[str] = mapped_column(String(50), unique=True, comment='任务名称') - task: Mapped[str] = mapped_column(String(255), comment='要运行的 Celery 任务(模块化字符串)') + task: Mapped[str] = mapped_column(String(255), comment='要运行的 Celery 任务') args: Mapped[str | None] = mapped_column(JSON(), comment='任务可接收的位置参数') kwargs: Mapped[str | None] = mapped_column(JSON(), comment='任务可接收的关键字参数') queue: Mapped[str | None] = mapped_column(String(255), comment='CELERY_TASK_QUEUES 中定义的队列') diff --git a/backend/app/task/schema/result.py b/backend/app/task/schema/result.py index cdb81719..d1480eca 100644 --- a/backend/app/task/schema/result.py +++ b/backend/app/task/schema/result.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- from datetime import datetime +from typing import Any from pydantic import ConfigDict, Field @@ -12,7 +13,7 @@ class TaskResultSchemaBase(SchemaBase): task_id: str = Field(description='任务 ID') status: str = Field(description='执行状态') - result: bytes | None = Field(description='执行结果') + result: Any | None = Field(description='执行结果') date_done: datetime | None = Field(description='结束时间') traceback: str | None = Field(description='错误回溯') name: str | None = Field(description='任务名称') diff --git a/backend/app/task/schema/scheduler.py b/backend/app/task/schema/scheduler.py index 6dbc818e..3a03d973 100644 --- a/backend/app/task/schema/scheduler.py +++ b/backend/app/task/schema/scheduler.py @@ -13,7 +13,7 @@ class TaskSchedulerSchemeBase(SchemaBase): """任务调度参数""" name: str = Field(description='任务名称') - task: str = Field(description='要运行的 Celery 任务(模块化字符串)') + task: str = Field(description='要运行的 Celery 任务') args: JsonValue | None = Field(default='[]', description='任务可接收的位置参数') kwargs: JsonValue | None = Field(default='{}', description='任务可接收的关键字参数') queue: str | None = Field(default=None, description='CELERY_TASK_QUEUES 中定义的队列') @@ -48,5 +48,8 @@ class GetTaskSchedulerDetail(TaskSchedulerSchemeBase): model_config = ConfigDict(from_attributes=True) id: int = Field(description='任务调度 ID') + enabled: bool = Field(description='是否启用任务') + total_run_count: int = Field(description='已运行总次数') + last_run_time: datetime | None = Field(None, description='最后运行时间') created_time: datetime = Field(description='创建时间') updated_time: datetime | None = Field(None, description='更新时间') diff --git a/backend/app/task/tasks/beat.py b/backend/app/task/tasks/beat.py index 89e1ee2c..ae0b1a1f 100644 --- a/backend/app/task/tasks/beat.py +++ b/backend/app/task/tasks/beat.py @@ -5,20 +5,20 @@ from celery.schedules import schedule from backend.app.task.utils.tzcrontab import TzAwareCrontab LOCAL_BEAT_SCHEDULE = { - 'exec_every_10_seconds': { - 'task': 'task_demo_async', - 'schedule': schedule(10), + '测试同步任务': { + 'task': 'task_demo', + 'schedule': schedule(5), }, - 'exec_every_1_minute_of_hour': { + '测试异步任务': { 'task': 'task_demo_async', 'schedule': TzAwareCrontab('1'), }, - 'exec_every_sunday': { - 'task': 'delete_db_opera_log', + '清理操作日志': { + 'task': 'app.task.tasks.db_log.tasks.delete_db_opera_log', 'schedule': TzAwareCrontab('0', '0', day_of_week='6'), }, - 'exec_every_15_of_month': { - 'task': 'delete_db_login_log', + '清理登录日志': { + 'task': 'app.task.tasks.db_log.tasks.delete_db_login_log', 'schedule': TzAwareCrontab('0', '0', day_of_month='15'), }, } diff --git a/backend/app/task/tasks/db_log/tasks.py b/backend/app/task/tasks/db_log/tasks.py index 5776083f..9e6aba53 100644 --- a/backend/app/task/tasks/db_log/tasks.py +++ b/backend/app/task/tasks/db_log/tasks.py @@ -5,14 +5,14 @@ from backend.app.admin.service.opera_log_service import opera_log_service from backend.app.task.celery import celery_app -@celery_app.task(name='delete_db_opera_log') +@celery_app.task async def delete_db_opera_log() -> int: """自动删除数据库操作日志""" result = await opera_log_service.delete_all() return result -@celery_app.task(name='delete_db_login_log') +@celery_app.task async def delete_db_login_log() -> int: """自动删除数据库登录日志""" result = await login_log_service.delete_all() diff --git a/backend/app/task/tasks/tasks.py b/backend/app/task/tasks/tasks.py index 08d79e29..89833cfc 100644 --- a/backend/app/task/tasks/tasks.py +++ b/backend/app/task/tasks/tasks.py @@ -1,12 +1,21 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- -from anyio import sleep +from time import sleep + +from anyio import sleep as asleep from backend.app.task.celery import celery_app +@celery_app.task(name='task_demo') +def task_demo() -> str: + """示例任务,模拟耗时操作""" + sleep(20) + return 'test async' + + @celery_app.task(name='task_demo_async') async def task_demo_async() -> str: """异步示例任务,模拟耗时操作""" - await sleep(20) + await asleep(20) return 'test async'