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启动后开始计算
    },
}

关键点:

  1. crontab(minute='*/15') 就是cron表达式,表示每15分钟执行
  2. 如果要指定具体开始时间,可以配合crontab(hour=14, minute=30)这样的写法
  3. 记得启动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 是不能指定时间的吧

回到顶部