I\'m having application built using celery and recently we got a requirement to run certain tasks on schedule.
I think celerybeat is perfect for this, but I got few ques
You may run multiple instances of celery beat and tasks will not be duplicated.
Take a look at the celery.beat.Scheduler class, specifically the reserve() function. The scheduler will reserve a task before submitting it to the grid for execution. This prevents another instance of celery beat from submitting the same task.
We use MongoDB as a backing store for our scheduled tasks. Here is a sample document showing that the task has been reserved by one of the schedulers.
{
"startdate": "2015-07-06 00:00:00",
"task": "cobalt.grid.tasks_facts.task_add",
"enddate": "2018-01-01 00:00:00",
"args": "[13.0, 42.0]",
"enabled": "True",
"last_run_at": "2015-08-13 15:04:49.058000",
"interval": "{u'every': u'1', u'period': u'minutes'}",
"relative": "False",
"total_run_count": "12",
"kwargs": "{}",
"reserved": "compute2:25703",
"_id": "ObjectId(55ccaf7784a3e752e73b08c2)",
"options": "{}"
}
http://celery.readthedocs.org/en/latest/reference/celery.beat.html#celery.beat.Scheduler