Python分布式任务队列Celery中如何使用cron表达式实现类似Java Quartz的定时任务,例如指定开始时间后间隔执行?
null
Python分布式任务队列Celery中如何使用cron表达式实现类似Java Quartz的定时任务,例如指定开始时间后间隔执行?
3 回复
在Celery里用cron表达式实现类似Quartz的定时任务,可以直接用crontab调度器。比如你要在指定开始时间后间隔执行,可以这样配置:
from celery import Celery
from celery.schedules import crontab
app = Celery('myapp')
# 配置beat_schedule
app.conf.beat_schedule = {
'task-name': {
'task': 'your_module.your_task', # 任务路径
'schedule': crontab(minute='*/15'), # 每15分钟执行一次
'args': (), # 任务参数
'kwargs': {},
'options': {},
'relative': True, # 从worker启动后开始计算
},
}
关键点:
crontab(minute='*/15')就是cron表达式,表示每15分钟执行- 如果要指定具体开始时间,可以配合
crontab(hour=14, minute=30)这样的写法 - 记得启动beat服务:
celery -A your_app beat
Celery的crontab支持标准的cron语法,比如:
crontab(minute='0', hour='9-17')工作日9点到17点整点执行crontab(day_of_month='1', hour='0', minute='0')每月1号执行
总结:用crontab调度器配置beat_schedule就行。
cron 配置成每两小时执行一次脚本
在脚本中判断当前时间是否已经过了 2019-05-01 12:10,
如果过了
再执行你的任务?
在业务入口写一下? cron 是不能指定时间的吧

