Celery 学习笔记(2)- 定时任务
来源:互联网 发布:cms html5模板 编辑:程序博客网 时间:2024/06/05 17:36
定时任务
Celery 中启动定时任务有两种方式,(1)在配置文件中指定;(2)在程序中指定。
# cele.pyimport celeryapp = celery.Celery('cele', broker='redis://localhost:6379')@app.taskdef 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 Celeryfrom celery.schedules import crontabapp = Celery()@app.on_after_configure.connectdef 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 seconds sender.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.taskdef 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 任务了。
0 0
- Celery 学习笔记(2)- 定时任务
- Celery 学习笔记(3)- 任务和任务执行
- Celery定时任务
- django-celery定时任务
- Celery定时任务
- Django笔记 使用Celery来进行定时Batch任务
- celery的定时任务记录
- Celery学习笔记(二)
- Celery学习笔记(一)
- Celery学习笔记(一)
- celery 学习笔记(二)
- django-celery动态添加定时任务
- Celery+python+redis异步执行定时任务
- 【Python】django-celery执行定时任务
- Celery消息队列----配置定时任务
- django+celery+redis实现运行定时任务
- 异步任务 Celery 简明笔记
- oracle定时任务学习笔记
- git reset soft hard mixed 详解
- DataAdapter和SqlBulkCopy的插入性能测试
- mybatis之通过单例模式来管理SqlSessionFactory
- linux socket编程之TCP与UDP
- windows下如何在一台机器上安装两个MYSQL数据库
- Celery 学习笔记(2)- 定时任务
- sk_buff详细介绍
- 开发者最常用的 8 款 Sublime text 3 插件
- js 缓动框架封装
- return 局部变量合法,函数返回值的生命周期
- Python练习实例15
- LeetCode 366. Find Leaves of Binary Tree
- Http Status 304响应状态的资源更新机制
- 同源&跨域(jsonp原理 / jQuery 的 jsonp)