You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Celery周期性定时任务配置问题:调整执行时段与间隔

调整Celery周期性任务配置以匹配你的时间需求

要实现周一至周五08:01开始、16:30结束,每隔17分钟执行一次的任务,我们需要微调crontab的时间规则——原配置的*/17是从每个小时的0分启动,不符合你从08:01开始的要求。

具体配置修改方案

这里我们用两个crontab规则组合,覆盖不同时间段的执行需求:

from celery.schedules import crontab

CELERYBEAT_SCHEDULE = {
    'test-celery': {
        'task': 'flask_react_app.task.ingest_stock_data',
        # 组合两个crontab规则,覆盖完整的时间范围
        'schedule': crontab(minute='1-59/17', hour='8-15', day_of_week='mon-fri') | 
                    crontab(minute='13,30', hour='16', day_of_week='mon-fri'),
    }
}

配置细节解释

  • 第一部分规则crontab(minute='1-59/17', hour='8-15', day_of_week='mon-fri')

    • minute='1-59/17':表示从1分钟开始,每隔17分钟执行一次,完美匹配你要的08:01、08:18、08:35...的时间序列。
    • hour='8-15':覆盖08点到15点的所有小时,这个时间段内的最后一次执行是15:56,不会超过16:30的结束时间。
  • 第二部分规则crontab(minute='13,30', hour='16', day_of_week='mon-fri')

    • 单独处理16点的执行:根据间隔计算,16点符合要求的执行时间是16:13和16:30(刚好是你的结束时间),这两个时间点无法被第一部分规则覆盖,所以单独列出。

验证执行时间

如果你想确认生成的任务时间是否符合预期,可以运行以下命令导出beat的任务计划:

celery beat --schedule /tmp/celerybeat-schedule --dump

查看输出的时间列表,就能确认所有执行点都在你要求的范围内。

内容的提问来源于stack exchange,提问作者user5948213

火山引擎 最新活动