定时任务

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)- 定时任务相关推荐

  1. celery 学习笔记 01-介绍

    celery 学习笔记 01-介绍 celery 是 python 中的常用的任务队列框架,经常用于异步调用.后台任务等工作.celery 本身以 python 写,但协议可在不同的语言中实现,其它语 ...

  2. celery 学习笔记定时任务和异步任务

    1.Celery加入异步和定时任务 Celery除了可以异步执行任务之外,还可以定时执行任务.在实例代码的基础上写个测试方法: import datetime import timefrom cele ...

  3. celery学习笔记:celery安装,并运行第一个应用

    1.celery通过消息进行通信,通常使用一个叫Broker(中间人)来协client(任务的发出者)和worker(任务的处理者). clients发出消息到队列中,broker将队列中的信息派发给 ...

  4. celery学习笔记

    celery -消息队列 -异步任务 -定时任务 -需要了解的知识 -选择并安装消息容器(载体) -安装celery并创建第一个任务 -开启工作进程并调用任务 -记录工作状态和返回的结果 Celery ...

  5. Celery 学习笔记(3)- 任务和任务执行

    任务 任务是 Celery 里不可缺少的一部分,它可以是任何可调用对象.每一个任务通过一个唯一的名称进行标识, worker 通过这个名称对任务进行检索.任务可以通过 app.task 装饰器进行注册 ...

  6. MySQL学习笔记 05、触发器、存储过程、存储函数、定时任务

    文章目录 前言 一.触发器 提前准备测试表 1.1.创建触发器 1.2.删除触发器 二.存储过程 2.1.认识变量 2.1.1.系统变量 2.1.2.用户变量 2.2.存储过程创建 2.3.删除存储过 ...

  7. pycharm 运行celery_Celery全面学习笔记

    来源 介绍 Celery 是 Distributed Task Queue,分布式任务队列.分布式决定了可以有多个 worker 的存在,队列表示其是异步操作. Celery 核心模块 Celery有 ...

  8. 千锋Django学习笔记

    千锋Django学习笔记 文章目录 千锋Django学习笔记 写在前面 1. MVC和MTV 2. Django简介 3. MTV简单流程 4. 和Model的简单对接 5. Model 6. Tem ...

  9. python嵩天课堂笔记_[Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周)

    [Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周) [Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周) 目录 强化学习 定义 马尔科夫决策过程 基本元素 值函数 最优值 ...

最新文章

  1. mysql 大事务 binlog_执行大事务时出现binlog解析失败
  2. 挪动以太坊:比特币现金的新功能使其成为智能合约竞争者
  3. Android5.x新特性之 Toolbar和Theme的使用
  4. missing template arguments before异常解决
  5. 两数之和C++代码实现超详细讲解
  6. flask高级编程-循环引用
  7. 数据库执行sql报错Got a packet bigger than 'max_allowed_packet' bytes及重启mysql
  8. PHP打印Excel表格并下载
  9. 浅论照明节能的系统设计
  10. 系统账号自动退出时长哪里设置
  11. 大杀器TheFatRat
  12. 实战 用Python放一场浪漫的烟花秀
  13. Google Play镜像站
  14. 龙芯电脑手动编译安装gcc9.3编译器
  15. 深度学习中的 Batch_Size,以及learning rate参数理解(跑pytorch代码时遇到的问题)
  16. secret学习笔记
  17. 使用 TreeView IE Web 控件
  18. Funexpected宣布推出全新的遵循渐进式课程,它有直观界面、丰富多彩的游戏世界、个性化数字导师等
  19. python最适合做什么生意好-本周互联网关注(2015515):劳动人民的生意经、python好还是go好...
  20. 未找到导入的项目 .wpp.targets。请确认 Import 声明中的路径正确,且磁盘上存在该文件

热门文章

  1. 自动化测试的主要类型有哪几种?
  2. 图的基本操作(数据结构实验报告)
  3. 我是如何每天半小时画一张画的?
  4. c语言输出菱形用等差数列找规律,「初中数学」探索规律——等差与二阶等差数列...
  5. sharepoint2010删除重复的用户名的技巧
  6. 计算机应用基础操作题文字录入,计算机应用基础期末考试题 一、 文字录入与排版(20分) 试用Word字处理软件录入一篇文章(每个学员的内容...
  7. 【IVI】Car.java获取Car相关服务和对应管理器
  8. JS实现移动端图片延迟加载
  9. 汇编语言的那些事------学习闲谈(一)
  10. Windows 自定义全局快捷键