外观
定时任务
使用说明
启动
启动Celery服务:在VSCode打开两个新终端,进入根目录(包含manage.py文件的目录)分别执行
sh
# 启动celery worker
celery -A mysite worker -l INFO -P solo
# 启动celery beat
celery -A mysite beat -l INFO

TIP
使用定时任务之前,请先按上面命令启动Celery服务。
功能说明
- 任务状态:分为暂停和开启
- 处理器的参数:可选。格式示例
{'a':1,'b':2}

- 处理器名字:对应APP中定义的Celery任务。例如:
myapp_infra.tasks.send_daily_report对应文件mysite\myapp_infra\tasks.py中的send_daily_report

- CRON表达式:Linux的CRON表达式。CRON表达式由 5 个时间字段组成。
sh
分钟 小时 日期 月份 星期
* * * * *CRON表达式可以直接让豆包等生成。例如

执行一次
点击更多——执行一次,会触发立即执行一次该任务。无论该任务的状态是开启还是暂停。

任务详细
点击更多——任务详细
- 可以看到定时任务详细信息
- 可以看到根据Cron表达式和当前时间,计算出来的后续执行时间

调度日志
点击更多——调试日志,可以查看该任务的历史执行记录

添加定时任务步骤
步骤:
- 在应用APP下的
tasks.py文件中,定义定时任务。- 例如
mysite\myapp_infra\tasks.py文件 - 例如
mysite\myapp_demo\tasks.py文件(假设新建的应用APP名称为myapp_demo)
- 例如

- 在定时任务主界面,添加定时任务

- 启动Celery服务。如果Celery服务之前已启动,则重启Celery服务。
后端实现
说明
代码目录
mysite\myapp_infra\job:定时任务mysite\myapp_infra\job_log:定时任务的调试日志
定时任务实现依赖下面组件
- celery:分布式任务队列框架
- redis:Celery 的消息中间件
- django-celery-beat:Django 集成的定时任务调度器
- django-celery-results:Django 集成的任务结果存储
Celery相关配置(可选)
- 文件
mysite\mysite\settings.py:INSTALLED_APPS中已添加django_celery_beat和django_celery_results- 已添加的Celery配置如下

- 文件
mysite\mysite\celery.py:定义和配置 Celery 实例

- 应用APP下的
tasks.py文件:用于定义Celery任务。例如mysite\myapp_infra\tasks.py文件

前端实现
代码目录
代码目录:src\views\infra\job
sh
job
├── JobDetail.vue # 任务详细
├── JobForm.vue # 新增/修改
├── index.vue # 定时任务主页
└── logger # 定时任务调度日志
├── JobLogDetail.vue
└── index.vue