# Blog: Ultimate Guide to Django Background Task

**URL:** <https://forum.djangoproject.com/t/blog-ultimate-guide-to-django-background-task/43873>\
**Category:** Show & Tell\
**Created:** [January 8, 2026, 11:18am UTC](https://forum.djangoproject.com/t/blog-ultimate-guide-to-django-background-task/43873 "2026-01-08T11:18:32Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![michael-yin](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/michael-yin/32/105_2.png) [@michael-yin](https://forum.djangoproject.com/u/michael-yin)\
**Post date:** [January 8, 2026, 11:18am UTC](https://forum.djangoproject.com/t/blog-ultimate-guide-to-django-background-task/43873/1 "2026-01-08T11:18:32Z")

</div>

I just published a comprehensive guide on Django background tasks, covering the new Django tasks in Django 6.

It includes:

- Quick setup with django-tasks
- Examples and useful tips
- Clear comparison: django-tasks vs Celery (when to use what)

Perfect if you’re new to Django background tasks.

[Ultimate Guide to Django Background Task](https://saashammer.com/blog/django-background-task-guide/)

---

<div class="post-metadata">

**Author:** ![theorangeone](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/theorangeone/32/21264_2.png) [@theorangeone](https://forum.djangoproject.com/u/theorangeone)\
**Post date:** [January 12, 2026, 9:37am UTC](https://forum.djangoproject.com/t/blog-ultimate-guide-to-django-background-task/43873/2 "2026-01-12T09:37:06Z")

</div>

I’m so glad to see people loving `django.tasks`! ❤ There are a few things not quite right in this post:

> For now, Django 6 only contains some reference code, which can not be used in real projects.

This isn’t quite true. What’s in Django 6.0 is definitely final code which is useful, it’s just a proper execution backend which isn’t included. For example, the `@task` decorator included works absolutely fine (including with 3rd-party backends).

Similarly, given that, you can update most of your imports to `from django.tasks import task`. In 6.0, only the backend needs to be pulled from `django_tasks`.

> **Supported Brokers** Database (built-in), Redis (via third-party backends)

Technically both the RQ-based and database are as built-in as eachother. The main difference is that whilst there’s an intention to eventually upstream the database backend, the RQ one will almost certainly always live externally.

> **Task Priorities** Limited (via queue separation)

`django-tasks` supports integer priority for tasks (at least on the DB backend). You can also do dedicated capacity via queue names (which you’ve covered in “Flexible Routing”).

The RQ backend doesn’t support priorities, but that’s a limitation of RQ itself.

> **Community & Maturity** New (Django 6, 2025)

The first version of `django-tasks` was in early 2024, and supports right back to Django 4.2. Sure, that’s nothing compared to Celery, but I know it’s been used in production since not long after that time.

> Don’t need distributed task processing

You can absolutely use `django-tasks` in a distributed fashion. For the database backend, multiple worker processes are supported, and can easily run across multiple machines. They only need the codebase and access to the database.

* * *

I’d love to know if there are places we can improve the documentation to make some of these limitations clearer, or make some of its features more evident.

---

<div class="post-metadata">

**Author:** ![lepture](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/lepture/32/31225_2.png) [@lepture](https://forum.djangoproject.com/u/lepture)\
**Post date:** [January 14, 2026, 10:48am UTC](https://forum.djangoproject.com/t/blog-ultimate-guide-to-django-background-task/43873/3 "2026-01-14T10:48:15Z")

</div>

> [@theorangeone](#):
>
> For now, Django 6 only contains some reference code, which can not be used in real projects.

I think you misunderstood him. What he means is that there is no production ready backend that you can use directly.

---

<div class="post-metadata">

**Author:** ![pauloxnet](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/pauloxnet/32/11021_2.png) [@pauloxnet](https://forum.djangoproject.com/u/pauloxnet)\
**Post date:** [January 14, 2026, 11:37am UTC](https://forum.djangoproject.com/t/blog-ultimate-guide-to-django-background-task/43873/4 "2026-01-14T11:37:19Z")

</div>

Thanks for explanation.

Since other people can have this misunderstanding maybe can be useful to highlight your points in both Django and in django-tasks documents or to rephrase them to be more clear.
