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 ...
随机推荐
- MQ系列14:MQ如何做到消息延时处理
MQ系列1:消息中间件执行原理 MQ系列2:消息中间件的技术选型 MQ系列3:RocketMQ 架构分析 MQ系列4:NameServer 原理解析 MQ系列5:RocketMQ消息的发送模式 MQ系 ...
- 在阿里云上部署Solid服务器
1.Solid是什么? Solid(中文文档)是一个令人兴奋的新项目,由万维网发明者 Tim Berners-Lee 爵士在麻省理工学院启动. 该项目旨在从根本上改变 Web 应用程序的中心化趋势, ...
- 【效率提升】maven 转 gradle 实战
一.灵魂三问 1.gradle 是什么? 一个打包工具, 是一个开源构建自动化工具,足够灵活,可以构建几乎任何类型的软件,高性能.可扩展.能洞察等.其中洞察,可以用于分析构建过程中数据,提供分析参考, ...
- 使用ensp搭建路由拓扑,并使用isis协议实现网络互通实操
转载请注明出处: 1.通过拓扑搭建如下拓扑: 其中R7.R8为L1,R6为L1/2,R9为L2. 2.配置isis实现网络互通 R7配置如下: [Huawei]isis 1 [Huawei-isis- ...
- JDK对于Java的作用
JDK是Java Development Kit的缩写,是Java的开发工具包(SDK).JDK 是整个 Java 的核心,包括 Java 运行环境(Java Runtime Envirnment,简 ...
- 通过unittest加载测试用例的不同方法
使用python+unitest做自动化测试执行时, 执行用例时就涉及测试用例的加载. 即如何把测试cases加载到测试suite,然后进行运行. 一般把用例加载方法分为两大类:通过unittest. ...
- 手写商用Java虚拟机HotSpot,疯狂磨砺技术中
在当前Java行业激烈竞争的形式下,唯有掌握技术,心中才不能慌.在多年前,我就开始苦练底层技术,但是眼看百遍也不如手过一遍,所以我打算把虚拟机的精华实现部分用手敲出来,这个过程注定不会轻松,但是心态不 ...
- Windows下VC++编译器32位memcpy、memmove函数汇编代码详解
整理者:赤勇玄心行天道 QQ号:280604597 微信号:qq280604597 QQ群:511046632 博客:www.cnblogs.com/gaoyaguo blog.csdn.net/c ...
- YbtOJ 「图论」第3章 最短路径
例题1.单源最短路径 dij 板子.(w36557658 原版 dij 代码! code #include<cmath> #include<queue> #include< ...
- DO、DTO、BO、AO、VO、POJO定义和转换的正确姿势
一.引言DO.DTO.BO.AO.VO.POJO的概念看似简单,但是想区分好或者理解好也不容易,本文简单梳理一下. 通过各层POJO的使用,有助于提高代码的可读性和可维护性. ------------ ...