Celery学习--- Celery操作之定时任务

celery支持定时任务,设定好任务的执行时间,celery就会定时自动帮你执行, 这个定时任务模块叫celery beat

文件定时执行任务

项目前提: 安装并启动Redis

celery_Schedule.py

# version: python3.2.5
# author: ‘lft415659‘
from celery import Celery
from celery.schedules import crontab  # 可以实现复杂的定时任务
app = Celery(‘CelerySchedule‘,
             # redis://:[email protected]:port/db_number  有密码认证的连接
             broker=‘redis://192.168.2.105‘,
             # broker=‘redis://:密码@192.168.2.105:6379/0‘,
             backend=‘redis://192.168.2.105‘,  # 用于Celery的返回结果的接收
             )

# 创建定时任务
@app.on_after_configure.connect     # 启动程序连接上celery后自动执行这个函数生成定时任务
def setup_periodic_tasks(sender, **kwargs):  # 第一次参数必须是sender,是定时任务的一个实例
    # Calls test(‘hello‘) every 10 seconds.   这里的test是我们自定义的函数
    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.task
def test(arg):
    print(‘run task:‘, arg)

后台启动Celery的worker任务:

[email protected]:~$ cd Celery
[email protected]:~/Celery$ vim celery_Schedule.py
[email protected]:~/Celery$ celery -A celery_Schedule worker -l info

启动定时任务调度器[celery beat]

[email protected]:~/Celery$ celery -A celery_Schedule beat

更复杂的定时任务

上面的定时任务比较简单,只是每多少s执行一个任务,但如果你想要每周一三五的早上8点给你发邮件怎么办呢?哈,其实也简单,用crontab功能,跟linux自带的crontab功能是一样的,可以个性化定制任务执行时间

【linux crontab】http://www.cnblogs.com/peida/archive/2013/01/08/2850483.html

【更多参考】http://www.cnblogs.com/alex3714/articles/6351797.html

from celery.schedules import crontab

app.conf.beat_schedule = {
    # 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),
    },
}

像配置文件一样定时执行任务【用的比较少】

app.conf.beat_schedule = {     ‘add-every-30-seconds‘: {         ‘task‘: ‘tasks.add‘,         ‘schedule‘: 30.0,         ‘args‘: (16, 16)     },
}
app.conf.timezone = ‘UTC‘

原文地址:https://www.cnblogs.com/ftl1012/p/9457698.html

时间: 2024-08-02 22:27:22

Celery学习--- Celery操作之定时任务的相关文章

Celery学习---Celery 分布式队列介绍及安装

Celery介绍和基本使用 Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理, 如果你的业务场景中需要用到异步任务,就可以考虑使用celery, 举几个实例场景中可用的例子: 1. 你想对100台机器执行一条批量命令,可能会花很长时间 ,但你不想让你的程序等着结果返回,而是给你返回 一个任务ID,你过一段时间只需要拿着这个任务id就可以拿到任务执行结果, 在任务执行ing进行时,你可以继续做其它的事情. 2. 你想做一个定时任务,比如每天检测

Celery学习--- Celery 最佳实践之与django结合实现异步任务

django 可以轻松跟celery结合实现异步任务,只需简单配置即可 同步执行和异步执行 注意:即使Celery的任务没有执行完成,但是已经创建了任务ID.可以利用前台的定时任务发送Ajax异步请求根据ID查询结果 项目整合 项目的目录结构: 项目前提: 安装并启动Redis CeleryTest/settings.py INSTALLED_APPS = [ ... 'app01', # 注册app ] MIDDLEWARE = [ ... # 'django.middleware.csrf.

Celery学习---Celery 与django结合实现计划任务功能

项目的目录结构: 项目前提: 安装并启动Redis 安装Django和Celery的定时任务插件 安装方法一: pip直接安装[安装了pip的前提下] [email protected]:~$ pip3 install django-celery-beat 安装方法二:直接源安装 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple django-celery-beat CeleryTest/settings.py INSTALLED_

Celery学习--- Celery在项目中的使用

可以把celery配置成一个应用,注意连接文件命名必须为celery.py 目录格式如下 项目前提: 安装并启动Redis CeleryPro/celery.py   [命名必须为celery.py] # 将相对路径转换为绝对路径 from __future__ import absolute_import, unicode_literals from celery import Celery # 定义了一个Celery的App app = Celery('tasks', # redis://:

celery执行异步任务和定时任务

一.什么是Clelery Celery是一个简单.灵活且可靠的,处理大量消息的分布式系统 专注于实时处理的异步任务队列 同时也支持任务调度 Celery架构 Celery的架构由三部分组成,消息中间件(message broker),任务执行单元(worker)和任务执行结果存储(task result store)组成. 消息中间件 Celery本身不提供消息服务,但是可以方便的和第三方提供的消息中间件集成.包括,RabbitMQ, Redis等等 任务执行单元 Worker是Celery提供

celery学习笔记2

1.定义: Celery是一个异步的任务队列(也叫做分布式任务队列) 2.工作结构 Celery分为3个部分 (1)worker部分负责任务的处理,即工作进程(我的理解工作进程就是你写的python代码,当然还包括python调用系统工具功能) (2)broker部分负责任务消息的分发以及任务结果的存储,这部分任务主要由中间数据存储系统完成,比如消息队列服务器RabbitMQ.redis.Amazon SQS.MongoDB.IronMQ等或者关系型数据库,使用关系型数据库依赖sqlalchem

Celery+python+redis异步执行定时任务

我之前的一篇文章中写了[Celery+django+redis异步执行任务] 博文:http://blog.csdn.net/apple9005/article/details/54236212 你会发现,这些代码并不依赖django框架,随便写到一个py文件中,就可以轻松的执行成功,这是因为这些代码并没有用到django-celery,django-redis等依附于django框架的东西. 今天,参照官方文档示例,测试一下celery的异步执行定时任务如何.我先是在django框架内执行了一

Celery - 一个懂得 异步任务 , 定时任务 , 周期任务 的芹菜

1.什么是Celery?Celery 是芹菜Celery 是基于Python实现的模块, 用于执行异步定时周期任务的其结构的组成是由    1.用户任务 app    2.管道 broker 用于存储任务 官方推荐 redis rabbitMQ  / backend 用于存储任务执行结果的    3.员工 worker 2.Celery的简单实例 1 from celery import Celery 2 import time 3 4 #创建一个Celery实例,这就是我们用户的应用app 5

xadmin引入celery执行异步任务与定时任务

一.安装 pip install celery pip install django-celery-beat pip install django-celery-results pip install redis 安装这4个库 请注意不是django-celery.django-redis.celery-with-redis等库 以前版本的Celery需要一个单独的库来与Django一起工作 但是自从3.1以后就不再是这样了 Django现在支持开箱即用 pip list celery==4.3