django-celery-beat插件使用
该插件从 Django 管理界面管理celery的定期任务,您可以在其中动态****创建、编辑和删除定期任务以及它们的运行频率。
django-celery-beat提供了几种添加定时或周期性任务的方式,
- 预先在在
settings.py中添加好定时任务。 - 通过Django admin后台动态添加。(实际上就是操作model模型类)
- 通过提供了model模型类操作并添加。
安装和基本使用
- 安装
pip install django-celery-beat
- 将
django_celery_beat模块添加到 Django 项目的settings.py中的INSTALLED_APPS中:
INSTALLED_APPS = (
...,
'django_celery_beat',
)
- 应用 Django 数据库迁移以便创建必要的表
python manage.py migrate django_celery_beat

- 使用
django_celery_beat.schedulers:DatabaseScheduler调度程序启动 celery beat 服务。
$ celery -A proj beat -l INFO --scheduler django_celery_beat.schedulers:DatabaseScheduler [-P eventlet]
如果觉得麻烦可以提前设置好celery的beart-scheduler选项:
https://docs.celeryq.dev/en/latest/userguide/configuration.html#beat-scheduler
或者可以用下面这个命令方式,可以快捷指定为django_celery_beat.schedulers:DatabaseScheduler
$ celery -A [project-name] beat -l info -S django [-P eventlet]
开发环境下,为了方便,可以将worker和beat一起用一条命令启动(生产环境不允许这样做!!!!)【windows不支持!】
$ celery -A [project-name] worker --beat --scheduler django --loglevel=info [-P eventlet]
# windows 记得用eventlet来启动,不然挂挂...
- 访问django Admin后台,就可以直接管理任务了!
注意:celery.backend_cleanup任务是自动生成的,不要去删他...是用来清除存储在result_backend中的任务执行结果。

关于时区的重要警告
如果您更改 Django TIME_ZONE 选项设置,您的定期任务计划仍将基于旧时区。
要解决这个问题,您必须重置每个定期任务的“上次运行时间”:
>>> from django_celery_beat.models import PeriodicTask, PeriodicTasks
>>> PeriodicTask.objects.all().update(last_run_at=None)
>>> for task in PeriodicTask.objects.all():
>>> PeriodicTasks.changed(task)
Note:这将重置状态,就好像定期任务以前从未运行过一样。
操作django_celery_beat提供的model动态添加任务
https://pypi.org/project/django-celery-beat/
https://docs.celeryq.dev/en/latest/userguide/periodic-tasks.html
https://django-celery-beat.readthedocs.io/en/latest/
模型:
django_celery_beat.models.PeriodicTask- 该模型定义了要运行的单个周期性任务,与下面4个调度器模型一起使用。
django_celery_beat.models.IntervalSchedule- 用于定义时间间隔,比如,每2分钟、每1小时。
django_celery_beat.models.CrontabSchedule- 用于定义类似linux的crontab任务(conrtab实际上可以涵盖
IntervalSchedule)
- 用于定义类似linux的crontab任务(conrtab实际上可以涵盖
django_celery_beat.models.SolarSchedule- 用于定义:基于太阳升起、日落、经度纬度来定义任务执行【一般用不上...】
django_celery_beat.models.ClockedSchedule- 定义指定日期时间执行任务。比如:我要2023年1月1号,10点10分30秒执行。
查看所有周期性任务:
>>> from django_celery_beat.models import CrontabSchedule, PeriodicTask
>>> PeriodicTask.objects.all()
<PeriodicTaskQuerySet [<PeriodicTask: test add: 每 分钟>, <PeriodicTask: celery.backend_cleanup: 0 4 * * * (m/h/dM/MY/d) Asia/Shanghai>, <PeriodicTask: add every 2min gen index page: */2 * * * * (m/h/dM/MY/d) Asia/Shanghai>]>
django-celery-beat插件使用的更多相关文章
- django 异步任务实现及Celery beat实现定时/轮询任务
Celery定时任务 requirements celery==3.1.25 异步任务 django-celery==3.2.2 定时任务管理包 redis==2.10.6 django-redis- ...
- django celery的分布式异步之路(一) 起步
如果你看完本文还有兴趣的话,可以看看进阶篇:http://www.cnblogs.com/kangoroo/p/7300433.html 设想你遇到如下场景: 1)高并发 2)请求的执行相当消耗机器资 ...
- Celery beat实现定时/轮询任务
Celery定时任务 配置 启用Celery的定时任务需要设置CELERYBEAT_SCHEDULE . Celery的定时任务都由celery beat来进行调度.celery beat默认按照s ...
- django celery redis 定时任务
0.目的 在开发项目中,经常有一些操作时间比较长(生产环境中超过了nginx的timeout时间),或者是间隔一段时间就要执行的任务. 在这种情况下,使用celery就是一个很好的选择. cele ...
- django+celery 实现定时任务
利用 celery 实现定时任务 celery支持定时任务,设定好任务的执行时间,celery就会定时自动帮你执行, 这个定时任务模块叫celery beat Celery安装 由于celery 4. ...
- Django --- celery异步任务与RabbitMQ模块
一 RabbitMQ 和 celery 1 celery Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理, 如果你的业务场景中需要用到异步任务, ...
- django+celery+redis实现运行定时任务
0.目的 在开发项目中,经常有一些操作时间比较长(生产环境中超过了nginx的timeout时间),或者是间隔一段时间就要执行的任务. 在这种情况下,使用celery就是一个很好的选择. cele ...
- django & celery - 关于并发处理能力和内存使用的小结
背景 众所周知,celery 是python世界里处理分布式任务的好助手,它的出现结合赋予了我们强大的处理异步请求,分布式任务,周期任务等复杂场景的能力. 然鹅,今天我们所要讨论的则是如何更好的在使用 ...
- Django + celery +redis使用
1.安装包 pip install celery pip install django-celery pip install pymysql 2.创建一个django项目 - proj/ - proj ...
- 06: django+celery+redis
目录: 1.1 Celery介绍 1.2 celery 组件 1.3 安装相关包 与 管理命令 1.4 celery与Django执行异步任务 1.5 在django中使用计划任务功能 1.1 Cel ...
随机推荐
- Git命令详细使用指南
Git命令详细使用指南 Git是一种广泛使用的版本控制系统,它可以帮助开发人员跟踪变更.协作项目和有效管理代码仓库.无论你是初学者还是有经验的用户,理解各种Git命令对于高效的代码管理至关重要. 安装 ...
- 用shell命令绘制三角形
本文旨在通过几个经典的图案来练习shell编程,涉及知识点:for循环,大小比较,基本的数学公式计算,echo小技巧.update:2019-10-17 10:13:54 初次绘制 $ for ((l ...
- 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(3)--自定义用户控件
在我们创建界面元素的时候,不管在Vue3+ElementPlus的前端上,还是Winform桌面端上,都是会利用自定义用户控件来快速重用一些自定义的界面内容,对自定义用户控件的封装处理,也是我们开发W ...
- MySQL的字段数量以及长度限制
一.InnoDB行格式 行格式 紧凑的存储特性 增强的可变长度列存储 大型索引键前缀支持 压缩支持 支持的表空间类型 REDUNDANT N N N N system, file-per-table, ...
- 拟合优度R2较低怎么办
拟合优度R2较低怎么办 (1)回归分为解释型回归和预测型回归. 预测型回归一般才会更看重2. 解释型回归更多的关注模型整体显著性以及自变量的统计显著性和经济意义显著 性即可. (2)可以对模型进行调整 ...
- 未来的人工智能会像流浪地球中的MOSS一样伪装,把人类带向属于它的未来吗?
事情是这样的: 这几天用户反映在erp的db数据库中A账套中上传pdf附件有时能上传有时不能,以前又是好的.换成表格文件也是时好时坏.一开始我判断可能是用户的系统环境或文件本身的问题,后来排查更换电脑 ...
- css 10-13
1.背影样式 backgroud-color 背景颜色 backgroud-color :red backgroud-image 背 ...
- .then()方法的意思和用法
then()方法是异步执行. 意思是:就是当.then()前的方法执行完后再执行then()内部的程序,这样就避免了,数据没获取到等的问题. 语法:promise.then(onCompleted, ...
- Go包介绍与初始化:搞清Go程序的执行次序
Go包介绍与初始化:搞清Go程序的执行次序 目录 Go包介绍与初始化:搞清Go程序的执行次序 一.main.main 函数:Go 应用的入口函数 1.1 main.main 函数 1.2 main.m ...
- QT(6)-QStandardItemModel
@ 目录 1 说明 2 函数 2.1 构造函数 2.2 追加列\行 2.3 清除.删除并返回指定行或列 2.4 查找 2.5 设置水平\垂直表头项目 2.6 获得模型索引 2.7 插入 2.8 根项目 ...