Skip to main content

django-dbtasks

Database backend and runner for Django tasks (new in 6.0).

django-dbtasks is tested on PostgreSQL, SQLite, and MySQL for versions of Python back to 3.12, including the free-threading builds.

Note when using SQLite it is recommended to set OPTIONS["transaction_mode"] = "IMMEDIATE" - see https://forum.djangoproject.com/t/sqlite-and-database-is-locked-error/26994 for more information.

Quickstart

Install the django-dbtasks package from PyPI, and configure your TASKS setting as follows:

TASKS = {
    "default": {
        "BACKEND": "dbtasks.backend.DatabaseBackend",
        "OPTIONS": {
            # Set this to True to execute tasks immediately (no need for a runner).
            "immediate": False,
            # Whether to send `task_enqueued`, `task_started`, and `task_finished`.
            "signals": True,
            # How long to retain ScheduledTasks in the database. Forever if not set.
            "retain": datetime.timedelta(days=7),
            # Tasks to run periodically.
            "periodic": {
                # Runs at 3:30am every Monday through Friday.
                "myproject.tasks.maintenance": "30 3 * * 1-5",
            },
        },
    },
}

Runner

django-dbtasks includes a dedicated taskrunner management command:

usage: manage.py taskrunner [-h] [-w WORKERS] [-i WORKER_ID] [--backend BACKEND]
                            [--delay DELAY] [--no-periodic]

It is also straightforward to run the runner in a thread of its own:

runner = Runner(workers=4, worker_id="in-process")
t = threading.Thread(target=runner.run)
t.start()
...
runner.stop()
t.join()

django-dbtasks itself is tested on free-threading builds of Python 3.13 and 3.14, but compatibility will depend on your database driver and other packages.

Periodic Tasks

As shown in the quickstart, periodic tasks are specified as a mapping in the backend OPTIONS under the periodic key. The keys of the mapping should be dotted paths to the tasks, and the values should either be a string in crontab format, or an instance of dbtasks.Periodic. Using a dbtasks.Periodic allows you to specify args and kwargs (as values or callables) that will be passed to the task, along with a custom retain duration.

Logging

Be sure to add a dbtasks logger to your LOGGING setting:

LOGGING = {
    ...
    "loggers": {
        "dbtasks": {
            "handlers": ["console"],
            "level": "INFO",
        },
    },
}

Testing

There is a RunnerTestCase that starts a runner for the duration of a test suite. See test_tasks.py for example usage.

Extras

django-dbtasks comes with a number of optional features for integration into various environments.

dbtasks.contrib.serve

This is a Django app you can add to INSTALLED_APPS to enable a serve management command that runs your site in a Granian server, with options to also start an integrated task runner. For instance, the following command will serve your site on 127.0.0.1:8000, start a runner, and reload your server (and tasks!) on code changes:

manage.py serve -k -r

Running an integrated task runner (with -k/--tasks) is not a great idea in production, but is excellent for development. Granian is a production-caliber server, so you can also use serve in production alongside a separate taskrunner command.

You can install the django-dbtasks[serve] extra to include Granian automatically.

uWSGI mule

You can run a uWSGI mule that starts a task runner by passing --mule=dbtasks.contrib.mule:taskrunner or specifying <mule>dbtasks.contrib.mule:taskrunner</mule> in your XML config.

Release files for django-dbtasks 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-dbtasks 0.4.0
File Size Uploaded
django_dbtasks-0.4.0.tar.gz 15.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-dbtasks 0.4.0
File Interpreter ABI Platform
django_dbtasks-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 37.2 kB

Release files / django_dbtasks-0.4.0.tar.gz

Download URL django_dbtasks-0.4.0.tar.gz
Size 15.1 kB
Tags Source
SHA-256 checksum
How to use checksums
e741cb84217b2be9bead22da8255a8a082058adf73b7bbe7144b2ca714844958
BLAKE2b-256 checksum
How to use checksums
0776a38da7031a6aa5d5ac75efd95e63e9cab5e657cac981e0b1a218a2084ec7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / django_dbtasks-0.4.0-py3-none-any.whl

Download URL django_dbtasks-0.4.0-py3-none-any.whl
Size 22.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
20101aa7fdf7cce08eb35f58dce42101a9dcc03ff9353ed7ac886f674cac460e
BLAKE2b-256 checksum
How to use checksums
eb0ae5650258a12be0abd5ab61b1363c7c649500f8d3e6946a10da84bd02837a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page