django项目用celery实现定时任务
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实现定时任务相关推荐
- django项目中使用crontab定时任务
django项目中使用crontab定时任务 django-crontab 在ubuntu-18.04.2上的使用 需求:django项目中需添加定时任务,定时执行某个函数或者自定义的命令等) 使用步 ...
- Celery在Django 项目中如何使用
创建目录celery_pro,并在celery_pro下创建下面两个文件 celery.py # celery.py # -*- coding:utf8 -*- from __future__ imp ...
- Django项目(sysinfo系统信息和用户信息展示)
还未完善,后续会更新 文章目录 创建Django项目 创建app 设置时区语言 数据库表生成 启动开发服务器 git管理项目 配置 apps函数(新建) urls函数(新建) 视图函数 sysinfo ...
- Django项目开发——002架构梳理
python三个开发框架: django tornado flask MVC #开源高级web开发框架,使用python #快速开发: ORM 构建数据库,方法简洁. #内置应用:admin,auth ...
- python消息队列celery_【干货分享】NTI任务管理之django+python篇celery异步任务使用...
阅读: 3,538 新浪微博的新鲜事推送如何实现?大规模的服务器如何实现Crontab管理?里面的秘密就在于消息队列.Celery是一个使用Python开发的分布式任务调度模块,是一个简单.灵活.可靠 ...
- Django 中使用Celery实现异步任务
1.在settings.py 同级目录下,新增一个celery.py的文件 需要注意的是:你的项目目录名要和配置一样 例如我的项目目录名就是 base_django_api 我的目录结构如下: # c ...
- django中使用celery简单介绍
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 本章节我们重点在于实现,如何存储任务的结果. 我们将任务函数改为: from celery_demo.celery im ...
- Django中使用Celery
创建Django项目:略过 配置python 多任务一定要写celery celery配置 视图中: 自己配置URL: 启动worker celery worker -A celery_task -l ...
- django框架下celery+rabbitmq+flower完成异步任务
[转载请注明出处:] http://www.cnblogs.com/yukityan/p/8035787.html 环境: ubuntu16.04 64位 安装: sudo apt-get insta ...
最新文章
- Django mysql 多线程_【实例:利用Django管理后台管理IP地址】(四)Django test+多线程+数据库+(踩坑)...
- windows给应用断网
- nagios出现乱码
- [AS3][Matrix][利用颜色矩阵进行颜色变换]
- 【Python】全文3000字,Pyecharts制作可视化大屏全流程! (附代码分享)
- 预训练图像处理Transformer:刷榜多项底层视觉任务
- 深入解读 MySQL 底层原理,让性能“飞起来”的方法总结
- Python中的类属性和实例属性以及静态方法和类方法
- 使用countDownLahct模拟多线程并发场景
- String类型直接赋值与构造赋值
- 优化SQL的执行速度
- 阿里云部署flask
- java模拟键盘操作,java自动化操作
- mysql 创建和查询数据库和表格
- 项目管理的前路怎么样?PMP证书作用如何?
- 法制博览杂志法制博览杂志社法制博览编辑部2022年第24期目录
- CSS控制多行文本省略--显示省略号
- ogv格式怎么转换为MP4格式
- Spring-Boot Dubbo 整合
- Flutter ListView (动态)列表组件、水平列表组件、图标组件详解