Celerybeat 每天两次在不同时间安排任务

Posted

技术标签:

【中文标题】Celerybeat 每天两次在不同时间安排任务【英文标题】:Celerybeat Schedule tasks twice a day in different hours 【发布时间】:2016-10-10 23:36:25 【问题描述】:

我有 Django 项目,我正在尝试在 CELERYBEAT_SCHEDULE 中设置一个 celery 任务调度程序。

我需要每天运行两次任务,第一次在 8:55,第二次在 17:15。

我知道我可以在同一分钟内运行它,例如:

'schedule': crontab(hour='9,17', minute=0, day_of_week='mon,thu')

但我不知道如何将每个小时设置为正确的分钟。

【问题讨论】:

【参考方案1】:

试试这个:

crontab(minute="55,15", hour="8,17", day_of_week='*',
        day_of_month='*', month_of_year='*')

【讨论】:

我会尝试并告诉你。所以基本上我可以在小时和分钟内创建一个用逗号分隔的列表,crontab 会以正确的顺序将它们组合在一起吗? 8:55 和 17:15。而不是 8:55、8:15、17:55、17:15【参考方案2】:

@denvaar's answer 似乎会在 8:15、8:55、17:15、17:55 运行。

如果这不能按您的意愿工作,我会将其安排在两个不同的行中:

crontab(minute="55", hour="8", day_of_week='*', day_of_month='*', month_of_year='*')
crontab(minute="15", hour="17", day_of_week='*', day_of_month='*', month_of_year='*')

【讨论】:

以上是关于Celerybeat 每天两次在不同时间安排任务的主要内容,如果未能解决你的问题,请参考以下文章

安排任务在两个日期之间每天运行两次

iOS - 使用不同的文本安排重复通知

防止 Celery Beat 运行相同的任务

在 Heroku 上运行的 Celery beat 进程发送任务两次

芹菜节拍:crontab 两次执行相同的任务(间隔 10 分钟)

在一天中的特定时间安排本地通知