Usage ===== The default call scheme is: Task.delay -> Broker -> Worker -> Execution Tasks ----- distributed_task will check in every installed app (``INSTALLED_APPS``) for a ``tasks.py`` file. Define your first task ---------------------- Create a ``tasks.py`` file in your desired app of choice:: from distributed_task import register_task @register_task def my_heavy_task_method(): pass Call your task -------------- The decorator adds a ``delay`` method to your task. You can decide in runtime if you'd like to execute the task delayed or immediately. Execute delayed in a worker process:: my_heavy_task_method.delay(*args, **kwargs) Default method execution (bypasses task distribution):: my_heavy_task_method(*args, **kwargs) Arguments --------- You can pass all args/kwargs to the ``my_heavy_task_method.delay`` method as you would call it normally. The serializer is also able to handle Django model instances but not QuerySets. This works fine:: instance = User.objects.first() my_heavy_task_method.delay('arg 1', user=instance, some_other_arg=False, some_float=12.5212) Response / Return values ------------------------ Method return values are not available. Maybe in a further version. Start the worker ---------------- Finally, you need to start the worker process:: python manage.py run_worker