Celery 学习笔记(2)- 定时任务
定时任务
Celery 中启动定时任务有两种方式,(1)在配置文件中指定;(2)在程序中指定。
# cele.py
import celeryapp = celery.Celery('cele', broker='redis://localhost:6379')@app.task
def send(message):return messageapp.conf.beat_schedule = {'send-every-10-seconds': {'task': 'cele.send','schedule': 10.0,'args': ('Hello World', )},
}
可以通过在配置文件中编写 beat_schedule 属性,来配置周期性任务,上面的示例配置了一个每十秒执行一次的周期任务,任务为 cele.send,参数为 ‘Hello World’。当然你也可以将这个配置写到单独的配置文件中进行读取。这种配置的方式可以支持多个参数,
- task: 指定任务的名字
- schedule : 设定任务的调度方式,可以是一个表示秒的整数,也可以是一个 timedelta 对象,或者是一个 crontab 对象(后面介绍),总之就是设定任务如何重复执行
- args: 任务的参数列表
- kwargs:任务的参数字典
- options:所有 apply_async 所支持的参数
同时官方文档中也指出,可以通过下面这种方式对定时任务进行设置。
from celery import Celery
from celery.schedules import crontabapp = Celery()@app.on_after_configure.connect
def setup_periodic_tasks(sender, **kwargs):# Calls test('hello') every 10 seconds.sender.add_periodic_task(10.0, test.s('hello'), name='add every 10')# Calls test('world') every 30 secondssender.add_periodic_task(30.0, test.s('world'), expires=10)# Executes every Monday morning at 7:30 a.m.sender.add_periodic_task(crontab(hour=7, minute=30, day_of_week=1),test.s('Happy Mondays!'),)@app.task
def test(arg):print(arg)
Celery 提供了一个 crontab 的对象,可以对于定时任务进行更为精确的时间设置,而不仅限于多少秒重复一次这种简单的任务。下面用例子的方式来说明一下。更详细的说明可以看这里 crontab scheduler
from celery.schedules import crontab# 每分钟执行一次
c1 = crontab()# 每天凌晨十二点执行
c2 = crontab(minute=0, hour=0)# 每十五分钟执行一次
crontab(minute='*/15')# 每周日的每一分钟执行一次
crontab(minute='*',hour='*', day_of_week='sun')# 每周三,五的三点,七点和二十二点没十分钟执行一次
crontab(minute='*/10',hour='3,17,22', day_of_week='thu,fri')
到目前为止,只是对任务进行了配置,但是还没有实际运行任务,要支持周期任务,需要启动一个组件 beat,它用于对任务进行调度,我们以 cele.py 为例进行说明。
celery -A cele beat
这个命令会启动 cele 应用的 beat,当然也可以在启动 worker 的时候使用 -B 参数同时启动 beat 。
celery -A cele worker -l info -B
这样就可以在启动的窗口看到每十秒执行一次的 send 任务了。
Celery 学习笔记(2)- 定时任务相关推荐
- celery 学习笔记 01-介绍
celery 学习笔记 01-介绍 celery 是 python 中的常用的任务队列框架,经常用于异步调用.后台任务等工作.celery 本身以 python 写,但协议可在不同的语言中实现,其它语 ...
- celery 学习笔记定时任务和异步任务
1.Celery加入异步和定时任务 Celery除了可以异步执行任务之外,还可以定时执行任务.在实例代码的基础上写个测试方法: import datetime import timefrom cele ...
- celery学习笔记:celery安装,并运行第一个应用
1.celery通过消息进行通信,通常使用一个叫Broker(中间人)来协client(任务的发出者)和worker(任务的处理者). clients发出消息到队列中,broker将队列中的信息派发给 ...
- celery学习笔记
celery -消息队列 -异步任务 -定时任务 -需要了解的知识 -选择并安装消息容器(载体) -安装celery并创建第一个任务 -开启工作进程并调用任务 -记录工作状态和返回的结果 Celery ...
- Celery 学习笔记(3)- 任务和任务执行
任务 任务是 Celery 里不可缺少的一部分,它可以是任何可调用对象.每一个任务通过一个唯一的名称进行标识, worker 通过这个名称对任务进行检索.任务可以通过 app.task 装饰器进行注册 ...
- MySQL学习笔记 05、触发器、存储过程、存储函数、定时任务
文章目录 前言 一.触发器 提前准备测试表 1.1.创建触发器 1.2.删除触发器 二.存储过程 2.1.认识变量 2.1.1.系统变量 2.1.2.用户变量 2.2.存储过程创建 2.3.删除存储过 ...
- pycharm 运行celery_Celery全面学习笔记
来源 介绍 Celery 是 Distributed Task Queue,分布式任务队列.分布式决定了可以有多个 worker 的存在,队列表示其是异步操作. Celery 核心模块 Celery有 ...
- 千锋Django学习笔记
千锋Django学习笔记 文章目录 千锋Django学习笔记 写在前面 1. MVC和MTV 2. Django简介 3. MTV简单流程 4. 和Model的简单对接 5. Model 6. Tem ...
- python嵩天课堂笔记_[Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周)
[Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周) [Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周) 目录 强化学习 定义 马尔科夫决策过程 基本元素 值函数 最优值 ...
最新文章
- mysql 大事务 binlog_执行大事务时出现binlog解析失败
- 挪动以太坊:比特币现金的新功能使其成为智能合约竞争者
- Android5.x新特性之 Toolbar和Theme的使用
- missing template arguments before异常解决
- 两数之和C++代码实现超详细讲解
- flask高级编程-循环引用
- 数据库执行sql报错Got a packet bigger than 'max_allowed_packet' bytes及重启mysql
- PHP打印Excel表格并下载
- 浅论照明节能的系统设计
- 系统账号自动退出时长哪里设置
- 大杀器TheFatRat
- 实战 用Python放一场浪漫的烟花秀
- Google Play镜像站
- 龙芯电脑手动编译安装gcc9.3编译器
- 深度学习中的 Batch_Size,以及learning rate参数理解(跑pytorch代码时遇到的问题)
- secret学习笔记
- 使用 TreeView IE Web 控件
- Funexpected宣布推出全新的遵循渐进式课程,它有直观界面、丰富多彩的游戏世界、个性化数字导师等
- python最适合做什么生意好-本周互联网关注(2015515):劳动人民的生意经、python好还是go好...
- 未找到导入的项目 .wpp.targets。请确认 Import 声明中的路径正确,且磁盘上存在该文件
热门文章
- 自动化测试的主要类型有哪几种?
- 图的基本操作(数据结构实验报告)
- 我是如何每天半小时画一张画的?
- c语言输出菱形用等差数列找规律,「初中数学」探索规律——等差与二阶等差数列...
- sharepoint2010删除重复的用户名的技巧
- 计算机应用基础操作题文字录入,计算机应用基础期末考试题 一、 文字录入与排版(20分) 试用Word字处理软件录入一篇文章(每个学员的内容...
- 【IVI】Car.java获取Car相关服务和对应管理器
- JS实现移动端图片延迟加载
- 汇编语言的那些事------学习闲谈(一)
- Windows 自定义全局快捷键