简介

celery beat 是一个调度器;它以常规的时间间隔开启任务,任务将会在集群中的可用节点上运行。

默认情况下,入口项是从 beat_schedule 设置中获取,但是自定义的存储也可以使用,例如在 SQL 数据库中存储入口项。

你必须保证一个调度一次只被一个调度器运行,否则将会形成重复任务。使用中央集权的方式意味着调度不需要被同步,并且服务可以在没有锁的情况下操作。

时区

默认情况下,周期性任务使用 UTC 时区,但是你可以使用 timezone 设置修改时区。

时区设置成 Europe/London 的示例:

timezone='Europe/London'

这个设置必须添加到你的应用实例,或者通过直接配置(app.conf.timezone = 'Europe/London'),或者如果你使用 app.config_from_object方法配置的话你可以将其添加到你的配置模块。查看配置这一节获取关于配置选项的跟多信息。

默认的调度器会自动探测时区的更改(调度器存储在 celerybeat-schedule文件中),并且会重置调度器,但是其他的调度器可能没有这么智能(例如:Django 数据库调度器,下面有讲到),这种情况下你必须自己重置调度器。

中国时间的设置

CELERY_TIMEZONE = "Asia/Shanghai"
CELERY_ENABLE_UTC = True

Entries

配置文件中设置

config.py

# coding:utf-8
"""celery 参数设置文件"""
from celery.schedules import crontab
CELERYD_CONCURRENCY = 4 CELERY_TIMEZONE = "Asia/Shanghai"
CELERY_ENABLE_UTC = True
# 定时任务的设置
CELERYBEAT_SCHEDULE = {
'test1': { # test1 定时项目名
'task': 'wangban.tasks.pour_tasks.tasks.send_tasks',#定时任务路径
'schedule': crontab(minute=0, hour="*/8"),# 定时的周期
'args': ()
}, 'task2': {
'task': 'wangban.tasks.pour_tasks.tasks.start_seletask_1',
'schedule': crontab(minute=0, hour="*/8"),
'args': ()
},
'task3': {
'task': 'wangban.tasks.pour_tasks.tasks.start_seletask_2',
'schedule': crontab(minute=0, hour="*/8"),
'args': ()
},
'task4': {
'task': 'wangban.tasks.countinfo.tasks.send_anounce_info',
'schedule': crontab(minute=0, hour=7),
'args': ()
},
}

Crontab schedules

Example Meaning
crontab() 每分钟执行
crontab(minute=0, hour=0) 每天凌晨执行
crontab(minute=0, hour=’*/3’) 每三个小时执行: midnight, 3am, 6am, 9am, noon, 3pm, 6pm, 9pm.
crontab(minute=0,hour=’0,3,6,9,12,15,18,21’) 同上
crontab(minute=’*/15’) 每十五分钟执行
crontab(day_of_week=’sunday’) 星期天每分钟执行
crontab(minute=’‘,hour=’‘, day_of_week=’sun’) 同上
crontab(minute=’*/10’,hour=’3,17,22’, day_of_week=’thu,fri’) 每十分钟执行, 但是只在星期四、五的 3-4 am, 5-6 pm, and 10-11 pm
crontab(minute=0, hour=’/2,/3’) 每两个小时及每三个小时执行,意思是: 除了下面时间的每个小时: 1am, 5am, 7am, 11am, 1pm, 5pm, 7pm, 11pm
crontab(minute=0, hour=’*/5’) 每五个小时执行。这意味着将在 3pm 而不是 5pm 执行 (因为 3pm 等于 24 小时制的 15, 能被 5 整除)
crontab(minute=0, hour=’*/3,8-17’) 每三个小时, 以及 (8am-5pm) 之间的小时执行
crontab(0, 0, day_of_month=’2’) 每个月的第二天执行
crontab(0, 0, day_of_month=’2-30/3’) 每个月的偶数天执行
crontab(0, 0,day_of_month=’1-7,15-21’) 每个月的第一个和第三个星期执行
crontab(0, 0, day_of_month=’11’,month_of_year=’5’) 每年五月份的第十一天执行
crontab(0, 0,month_of_year=’*/3’) 每个季度的第一个月执行

查看 celery.schedules.crontab 这一节获取更多的信息。

Starting the Scheduler

启动 celery beat 服务:

$ celery -A proj beat

你可以通过使能工作单元的 -B 选项将 beat 嵌入到你的工作单元中,如果你不会启动多于一个工作单元,那么这是很便利的,但是这并不常用,并且也不推荐在生产环境使用:

$ celery -A proj worker -B

Beat 需要在一个本地数据库文件(默认是 celerybeat-schedule文件 )中保存任务的最后执行时间,所以需要有当前目录的写权限,或者你也可以为这个文件制定一个自定义的路径:

$ celery -A proj beat -s /home/celery/var/run/celerybeat-schedule

注意:
使用 beat 守护进程,请查看相关文档。

celery 基础教程(四):定时任务的更多相关文章

  1. Qt零基础教程(四) QWidget详解篇

    在博客园里面转载我自己写的关于Qt的基础教程,没次写一篇我会在这里更新一下目录: Qt零基础教程(四) QWidget详解(1):创建一个窗口 Qt零基础教程(四) QWidget详解(2):QWid ...

  2. Qt零基础教程(四)QWidget详解(3):QWidget的几何结构

    Qt零基础教程(四)  QWidget详解(3):QWidget的几何结构 这篇文章里面分析了QWidget中常用的几种几何结构 下图是Qt提供的分析QWidget几何结构的一幅图,在帮助的 Wind ...

  3. SpringCloud2.0 Ribbon 服务发现 基础教程(四)

    1.启动[服务中心]集群,即 Eureka Server 参考 SpringCloud2.0 Eureka Server 服务中心 基础教程(二) 2.启动[服务提供者]集群,即 Eureka Cli ...

  4. celery 基础教程(三):配置

    前言 如果你使用默认的加载器,你必须创建 celeryconfig.py 模块并且保证它在python路径中. 一.加载配置方法  1.基础方法  可以设置一些选项来改变 Celery 的工作方式.这 ...

  5. celery 基础教程(一):工作流程,架构以及概念

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

  6. js基础教程四之无缝滚动

    前面学习了相关js的一些基础知识,这节主要针对定时器作综合运用: 无缝滚动-基础 效果演示: *物体运动基础 *让div移动起来 *offsetLeft的作用 *用定时器让物体连续移动 <sty ...

  7. celery 基础教程(五):守护进程

    一 守护进程方式启动 https://blog.csdn.net/p571912102/article/details/82735052 文件目录如下 . ├── config.py ├── main ...

  8. celery 基础教程(二):简单实例

    前言 使用celery包含三个方面:1. 定义任务函数.2. 运行celery服务.3. 客户应用程序的调用. 实例一: #1. 定义任务函数 创建一个文件 tasks.py输入下列代码: from ...

  9. mysql基础教程(四)-----事务、视图、存储过程和函数、流程控制

    事务 概念 事务由单独单元的一个或多个SQL语句组成,在这 个单元中,每个MySQL语句是相互依赖的.而整个单独单 元作为一个不可分割的整体,如果单元中某条SQL语句一 旦执行失败或产生错误,整个单元 ...

随机推荐

  1. 【JMeter_18】JMeter逻辑控制器__吞吐量控制器<Throughput Controller>

    吞吐量控制器<Throughput Controller> 业务逻辑: 他的实际作用似乎跟吞吐量扯不上什么关系.就是单纯的控制控制器下的子节点被执行的次数或被执行比列,该控制器默认为多线程 ...

  2. .NET Framework、.NET Core 和 .NET 5+ 的产品生命周期

    本文整理记录了 .NET Framework..NET Core 和 .NET 各个版本的产品支持周期和操作系统兼容性. 早于 .NET Framework 2.0 和 .NET Core 2.1 的 ...

  3. cb04a_c++_数据结构_STL_queue队列-一般用来做系统软件开发

    /*cb04a_c++_数据结构_STL_queue队列-一般用来做系统软件开发队列(只能两端数据)与堆栈(只能一端操作数据)都没有迭代器.,队列:FIFO先进先出自适应容器(容器适配器)栈适配器ST ...

  4. 谁再悄咪咪的吃掉异常,我上去就是一 JIO

    又到周末了,周更选手申请出站~ 这次分享一下上个月碰到的离奇的问题.一个简单的问题,硬是因为异常被悄咪咪吃掉,过关难度直线提升,导致小黑哥排查一个晚上. 这个美好的晚上,本想着开两把 LOL 无限火力 ...

  5. Maven全局配置文件settings.xml详解(转)

    Maven全局配置文件settings.xml详解   目录 一.概要 1.settings.xml的作用2.settings.xml文件位置3.配置的优先级 二.settings.xml元素详解 1 ...

  6. android java层通过jni加载使用第三方的so库

    1.例如我们自己编译一个so库,我们的其他模块要加载如何操作了 首先在c盘新建立一个文件夹sb,在sb下面新建立一个文件夹jni,如果你要使用ndk编译so库,必须需要有jni目录 2.在jni目录下 ...

  7. Idea激活JRebel

    选择license激活 UUID 生成地址: http://www.uuid.online 激活地址 http://jrebel-license.jiweichengzhu.com/ UUID

  8. Python 简明教程 --- 4,Python 变量与基本数据类型

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 任何一个人都会写出能够让机器理解的代码,只有好的程序员才能写出人类可以理解的代码. -- Marti ...

  9. 如何在 asp.net core 3.x 的 startup.cs 文件中获取注入的服务

    一.前言 从 18 年开始接触 .NET Core 开始,在私底下.工作中也开始慢慢从传统的 mvc 前后端一把梭,开始转向 web api + vue,之前自己有个半成品的 asp.net core ...

  10. Hexo快速构建个人小站-Fulid主题下添加Valine评论系统(三)

    Hexo目录: Hexo快速构建个人小站-Hexo初始化和将项目托管在Github(一) Hexo快速构建个人小站-自定义域名和自定义主题(二) 背景交代: 前面两章完成了Hexo的初始化和部分自定义 ...