如何安排任务在特定时间每n分钟运行一次(celery-django)

问题描述 投票:0回答:2

在django中使用celerybeat时,我想安排一个任务在特定时间启动,然后每5分钟运行一次。我能够使用 crontab(minute='*/5') 让任务每 5 分钟运行一次,这将在 celerybeat 启动后运行,但我想在例如 8:30 运行它,该怎么做?

django celery celerybeat
2个回答
1
投票

首先,您将任务设置为每 5 分钟运行一次,并且您已经完成了。

第二步是将您的任务主体包装成一个条件,以检查它在当前时间是否应该运行。 像这样的

from django.utils import timezone
import datetime

@app.task
def my_task():
    now = timezone.now().time()
    start_time = datetime.time(8, 30, 0)
    end_time = datetime.time(17, 30, 0)
    if now >= start_time and now < end_time:
        # your task ...

0
投票

不完全是您要找的东西,因为这需要您的任务在特定的整小时内运行,而不是像您所说的从半小时开始:

crontab(minute='*/5',hour='8,9,10')

在此基础上,您可以使用多个语句来完成这项工作。

如果你想让它从 8:30 运行到 11:30,你可以这样做:

crontab(minute='30,35,40,45,50,55',hour='8')
crontab(minute='*/5',hour='9,10')
crontab(minute='0,5,10,15,20,25,30',hour='11')

您可以在这里参考文档https://docs.celeryq.dev/en/stable/userguide/periodic-tasks.html

© www.soinside.com 2019 - 2024. All rights reserved.