The delay method is a shorthand version of the apply_async method, which is called in this format:
task.apply_async( args=[1, 2], kwargs={'kwarg1': '1', 'kwarg2': '2'} )
However, the args keyword can be implicit, as shown here:
apply_async([1, 2], kwargs={'kwarg1': '1', 'kwarg2': '2'})
Calling apply_async allows you to define some extra functionality in the task call that you cannot specify in the delay method. First, the countdown option specifies the amount of time in seconds that the worker, upon receiving the task, should wait before running it:
>>> from webapp.blog.tasks import log >>> log.apply_async(["Message"], countdown=600)
The countdown is not a guarantee that the task will be run after 600 seconds. The countdown option only says...