栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

django项目用celery实现定时任务

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

django项目用celery实现定时任务

celery beat 简介

在项目开发过程中,经常遇到要定期执行的任务,如定期备份数据,检查设备状态,定时发送邮箱等,celery beat 是1个开发效率很高的定时任务框架,而且运行非常稳定。

Celery 是基于python开发的分布式异步消息任务队列,通过它可以实现任务的异步处理以及定时任务的处理,

Celery 架构中的主要角色有
  • Worker, 任务函数
  • Broker 消息队列
  • Client 客户端 ,发出调用任务函数的请求
  • Backend: 保存worker 执行完任务函数后的结果
celery 原理图如下

celery beat

celery beat 是1个任务执行规划器,可以按定时,按间隔来执行 task,
默认是用 CELERYBEAT_SCHEDULE 配置项来设置定时任务。

定时任务实现步骤 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 timedelta

app = 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 crontab

app = 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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/982783.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号