How can I schedule a Task to execute at a specific time using celery? How can I schedule a Task to execute at a specific time using celery? python python

How can I schedule a Task to execute at a specific time using celery?


Use

YourTask.apply_async(args=[some, args, here], eta=when)

And at the end of your task, reschedule it to the next time it should run.


The recently released version 1.0.3 supports this now, thanks to Patrick Altman!

Example:

from celery.task.schedules import crontabfrom celery.decorators import periodic_task@periodic_task(run_every=crontab(hour=7, minute=30, day_of_week="mon"))def every_monday_morning():    print("This runs every Monday morning at 7:30a.m.")

See the changelog for more information:

http://celeryproject.org/docs/changelog.html


I have just submitted a patch to add a ScheduledTask to accomplish a small bit of time based scheduling versus period based:

https://github.com/celery/celery/commit/e8835f1052bb45a73f9404005c666f2d2b9a9228