外观
定时任务
使用说明
主界面
- 任务状态:分为暂停和开启
- 处理器的参数:可选。格式示例
{'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表达式和当前时间,计算出来的后续执行时间
调度日志
点击更多——调试日志,可以查看该任务的历史执行记录
后端实现
目录
代码目录:
mysite\myapp_infra\job
:定时任务mysite\myapp_infra\job_log
:定时任务的调试日志
实现
定时任务实现依赖下面组件
- celery:分布式任务队列框架
- redis:Celery 的消息中间件
- django-celery-beat:Django 集成的定时任务调度器
- django-celery-results:Django 集成的任务结果存储
启动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服务。
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
文件
添加定时任务步骤
步骤:
- 在应用APP下的
tasks.py
文件中,定义定时任务。例如mysite\myapp_infra\tasks.py
文件
- 在定时任务主界面,添加定时任务
- 启动Celery服务。如果Celery服务之前已启动,则重启Celery服务。
Celery 监控
Celery Flower 是一个用于监控和管理 Celery 任务的开源 Web 应用程序,它提供了实时的任务状态监控、任务执行图表、工作者信息、任务追踪和任务日志等功能。
Celery Flower 服务启动命令:在VSCode打开终端,进入根目录(包含manage.py文件的目录)执行
sh
# 启动celery 监控(可选)
celery -A mysite flower --port=5555
访问 http://localhost:5555 查看任务状态
- 点击 Tasks 查看当前及后来的任务(不会显示以前的任务)。另外,通过观察任务列表的变化,判断 Celery Beat 的状态是否正常。
- 点击 Workers 查看 Celery Worker 状态
- 点击 Broker 查看 Redis 状态
前端实现
目录
代码目录:src\views\infra\job
sh
job
├── JobDetail.vue # 任务详细
├── JobForm.vue # 新增/修改
├── index.vue # 定时任务主页
└── logger # 定时任务调度日志
├── JobLogDetail.vue
└── index.vue