从 00:00 到 02:00 每天执行的 Django celery 任务

Django celery task that will execute every day from 00:00 to 02:00

我需要设置 django celery 任务 my_task,它将每天从 00:00 到 02:00 执行,在此期间间隔 5 分钟。似乎无法通过 django-celery-beat 在管理员中设置此任务。如何正确设置?

我需要类似的东西

celery_app.conf.beat_schedule = {
    'my_task_1': {
        'task': 'tasks.my_task',
        'schedule': crontab(minute=5),
        'start': crontab(hour=0, minute=0),
        'expires': crontab(hour=2, minute=0),
        'args': (".."),
    },
}

感谢您的宝贵时间。

您可以 运行 使用 celerybeat 任务,该任务将 运行 另一个 celery 任务并执行:

  1. 检查当前时间是否在 00.00 - 02.00 区间内
  2. 如果第 1 点为真,请执行您的逻辑
  3. 运行 在 5 分钟内再次 apply_async。

你会得到什么,在 00.00,你的 celerebeat 任务将是 运行,它会启动你的另一个 celerey 任务,该任务将在逻辑之上执行,直到它是 02.00。

Celery 的 crontab schedule class accepts the full crontab 语法,可能有点难以理解。此配置应满足您的要求:

celery_app.conf.beat_schedule = {
    'my_task_1': {
        'task': 'tasks.my_task',
        'schedule': crontab(hour="0-1", minute="*/5"),
        'args': (".."),
    },
}

注意:这不是 运行 2:00 的任务。我认为实现此目的的最简单方法是添加第二个时间表:

    'my_task_2am': {
        'task': 'tasks.my_task',
        'schedule': crontab(hour="2", minute="0"),
        'args': (".."),
    },