celery beat 简介

在项目开发过程中,经常遇到要定期执行的任务,如定期备份数据,检查设备状态,定时发送邮箱等,celery beat 是1个开发效率很高的定时任务框架,而且运行非常稳定。

Celery 是基于python开发的分布式异步消息任务队列,通过它可以实现任务的异步处理以及定时任务的处理,

Celery 架构中的主要角色有

  • Worker, 任务函数
  • Broker 消息队列
  • Client 客户端 ,发出调用任务函数的请求
  • Backend: 保存worker 执行完任务函数后的结果

celery 原理图如下

celery beat

celery beat 是1个任务执行规划器,可以按定时,按间隔来执行 task,
默认是用 CELERYBEAT_SCHEDULE 配置项来设置定时任务。

celery beat 不仅可以用于 django项目,也可以用于flask, tornado等其它python项目。

定时任务实现步骤

1、 TimeZone.

默认使用UTC, celeryconfig.py 要添加:
CELERY_TIMEZONE=‘Asia/Shanghai’

2、定时任务配置

可以配置在 celerybeat-schedule 文件中,也可以在 celeryconfig.py 中

(1) 按间隔来启动任务

配置项名称: CELERYBEAT_SCHEDULE ,可以在 init()里设置,或者在 celeryconfig.py 里设置。

from celery import Celery
from datetime import timedeltaapp = Celery('demo')                                # 创建 Celery 实例
app.config_from_object('celery_app.celeryconfig')   # 通过 Celery 实例加载配置模块app.conf.update(
CELERYBEAT_SCHEDULE = {'add-every-30-seconds': {'task': 'tasks.add','schedule': timedelta(seconds=30),'args': (16, 16)},
}
)

代码说明
‘add-every-30-seconds’ , scheduler 名称
‘task’,要执行的任务函数
Schedule参数是时间间隔, 本例: 每隔30秒启动 tasks.add(), 参数为(16, 16)

(2)按定时方式来配置 schedule

在celery_app的 init()中, 添加定时任务配置项,
如下例 :每周一,7:30 执行 tasks.add(16,16)

from celery import Celery
from datetime import timedelta
from celery.schedules import crontabapp = Celery('demo')                                # 创建 Celery 实例
app.config_from_object('celery_app.celeryconfig')   # 通过 Celery 实例加载配置模块app.conf.update(
CELERYBEAT_SCHEDULE = {'add-every-30-seconds': {'task': 'tasks.add','schedule': timedelta(seconds=30),'args': (16, 16)},# Executes every Monday morning at 7:30 A.M'add-every-monday-morning': {'task': 'tasks.add','schedule': crontab(hour=7, minute=30, day_of_week=1),'args': (16, 16),},
}
)

‘schedule’, 使用 crontab 方法,常见的使用方式:

3. 启动定时任务管理

先启动 beat
celery -A celery_app beat -l info

再启动 worker
celery -A celery_app worker -l info -P eventlet

windows 下要安装 eventlet 才能获得结果输出

启动 flower(默认地址是localhost:5555),方便通过web 图形化查看celery任务执行情况
celery -A celery_app flower

django项目用celery实现定时任务相关推荐

  1. django项目中使用crontab定时任务

    django项目中使用crontab定时任务 django-crontab 在ubuntu-18.04.2上的使用 需求:django项目中需添加定时任务,定时执行某个函数或者自定义的命令等) 使用步 ...

  2. Celery在Django 项目中如何使用

    创建目录celery_pro,并在celery_pro下创建下面两个文件 celery.py # celery.py # -*- coding:utf8 -*- from __future__ imp ...

  3. Django项目(sysinfo系统信息和用户信息展示)

    还未完善,后续会更新 文章目录 创建Django项目 创建app 设置时区语言 数据库表生成 启动开发服务器 git管理项目 配置 apps函数(新建) urls函数(新建) 视图函数 sysinfo ...

  4. Django项目开发——002架构梳理

    python三个开发框架: django tornado flask MVC #开源高级web开发框架,使用python #快速开发: ORM 构建数据库,方法简洁. #内置应用:admin,auth ...

  5. python消息队列celery_【干货分享】NTI任务管理之django+python篇celery异步任务使用...

    阅读: 3,538 新浪微博的新鲜事推送如何实现?大规模的服务器如何实现Crontab管理?里面的秘密就在于消息队列.Celery是一个使用Python开发的分布式任务调度模块,是一个简单.灵活.可靠 ...

  6. Django 中使用Celery实现异步任务

    1.在settings.py 同级目录下,新增一个celery.py的文件 需要注意的是:你的项目目录名要和配置一样 例如我的项目目录名就是 base_django_api 我的目录结构如下: # c ...

  7. django中使用celery简单介绍

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 本章节我们重点在于实现,如何存储任务的结果. 我们将任务函数改为: from celery_demo.celery im ...

  8. Django中使用Celery

    创建Django项目:略过 配置python 多任务一定要写celery celery配置 视图中: 自己配置URL: 启动worker celery worker -A celery_task -l ...

  9. django框架下celery+rabbitmq+flower完成异步任务

    [转载请注明出处:] http://www.cnblogs.com/yukityan/p/8035787.html 环境: ubuntu16.04 64位 安装: sudo apt-get insta ...

最新文章

  1. Django mysql 多线程_【实例:利用Django管理后台管理IP地址】(四)Django test+多线程+数据库+(踩坑)...
  2. windows给应用断网
  3. nagios出现乱码
  4. [AS3][Matrix][利用颜色矩阵进行颜色变换]
  5. 【Python】全文3000字,Pyecharts制作可视化大屏全流程! (附代码分享)
  6. 预训练图像处理Transformer:刷榜多项底层视觉任务
  7. 深入解读 MySQL 底层原理,让性能“飞起来”的方法总结
  8. Python中的类属性和实例属性以及静态方法和类方法
  9. 使用countDownLahct模拟多线程并发场景
  10. String类型直接赋值与构造赋值
  11. 优化SQL的执行速度
  12. 阿里云部署flask
  13. java模拟键盘操作,java自动化操作
  14. mysql 创建和查询数据库和表格
  15. 项目管理的前路怎么样?PMP证书作用如何?
  16. 法制博览杂志法制博览杂志社法制博览编辑部2022年第24期目录
  17. CSS控制多行文本省略--显示省略号
  18. ogv格式怎么转换为MP4格式
  19. Spring-Boot Dubbo 整合
  20. Flutter ListView (动态)列表组件、水平列表组件、图标组件详解

热门文章

  1. 用andengine做一款俄罗斯方块游戏
  2. 21点代码python_python实现一个简单的21点游戏
  3. 4.1. Lexical Structure
  4. 【MySQL】聚合/联合查询--同程艺龙校招笔试
  5. 关于harbor私有仓库忘记登录密码
  6. 问题解决丨关于diagrams打开现有绘图未找到资源库的问题【已解决】
  7. 超低功耗高性能2.4GHz GFSK无线发射芯片SI24R2
  8. 让页面跳舞的Javascript库Rythm.js
  9. Oracle数据库实验二:用户及权限管理
  10. 2D目标检测综述之检测模型篇(二)