gpt4 book ai didi

python - 如何使用 celery 安排在月底运行的任务?

转载 作者:太空宇宙 更新时间:2023-11-03 17:37:40 24 4
gpt4 key购买 nike

我需要将 celery crontab 设置为在月底运行,甚至与月底不同的一天(28~31)运行。我知道如何在 shell 命令上设置 crontab 在月底运行,如下所示:

55 23 28-31 * * /usr/bin/test $( date -d '+1 day' +%d ) -eq 1 && exec something

但是在 celery 时间表上我不知道如何进行此设置。有什么方法可以安排在 celery 上月底运行的任务吗?
似乎唯一的方法是重写 celery.schedules.crontab 上的 is_due 方法。

最佳答案

如果您不介意一点开销 - 您可以将任务设置为每天在 CELERYBEAT_SCHEDULE 中运行。

然后在任务本身中,您可以检查这一天是否是该月的最后一天:

import calendar
from datetime import datetime

@task
def task_to_run_at_end_of_month():
today = datetime.today()
day_in_month = today.day
month = today.month
year = today.year
day_of_week, number_of_days_in_month = calendar.monthrange(year, month)
if day_in_month != number_of_days_in_month:
# not last day of month yet, do nothing
return
# process stuff on last day of month
...

关于python - 如何使用 celery 安排在月底运行的任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30978329/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com