Django.fun

Restarting celery and celery beat schedule relationship in django

Will restarting celery cause all the periodic tasks(celery beat schedules) to get reset and start from the time celery is restarted or does it retain the schedule?

For example assume I have a periodic task that gets executed at 12 pm everyday. Now I restart celery at 3 pm. Will the periodic task be reset to run at 3 pm everyday?

Answers: 1

Answered by rzlvmp, Oct. 13, 2021, 9:03 a.m.

How do you set your task?

Here is many ways to set task schedule →

  • Example: Run the tasks.add task every 30 seconds.
app.conf.beat_schedule = {
    'add-every-30-seconds': {
        'task': 'tasks.add',
        'schedule': 30.0,
        'args': (16, 16)
    },
}
app.conf.timezone = 'UTC'

This task is running every 30 seconds after start.

  • Another example:
from celery.schedules import crontab

app.conf.beat_schedule = {
    # Executes every Monday morning at 7:30 a.m.
    'add-every-monday-morning': {
        'task': 'tasks.add',
        'schedule': crontab(hour=7, minute=30),
        'args': (16, 16),
    },
}

This task is running at 7:30 every day.

You may check schedule examples

So answer is depending on your code.