summaryrefslogtreecommitdiff
path: root/django/tasks/__init__.py
diff options
context:
space:
mode:
authorJake Howard <git@theorangeone.net>2025-07-17 12:51:09 +0100
committernessita <124304+nessita@users.noreply.github.com>2025-09-16 17:28:32 -0300
commit4289966d1b8e848e5e460b7c782dac009d746b20 (patch)
treeef1d61a33562579d985c762036db5f7aa01406fc /django/tasks/__init__.py
parent218f69f05eb51da1ea17d62a914a67ceff5bfd55 (diff)
Fixed #35859 -- Added background Tasks framework interface.
This work implements what was defined in DEP 14 (https://github.com/django/deps/blob/main/accepted/0014-background-workers.rst). Thanks to Raphael Gaschignard, Eric Holscher, Ran Benita, Sarah Boyce, Jacob Walls, and Natalia Bidart for the reviews.
Diffstat (limited to 'django/tasks/__init__.py')
-rw-r--r--django/tasks/__init__.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/django/tasks/__init__.py b/django/tasks/__init__.py
new file mode 100644
index 0000000000..ae7ae8dd7c
--- /dev/null
+++ b/django/tasks/__init__.py
@@ -0,0 +1,45 @@
+from django.utils.connection import BaseConnectionHandler, ConnectionProxy
+from django.utils.module_loading import import_string
+
+from . import checks, signals # NOQA
+from .base import (
+ DEFAULT_TASK_BACKEND_ALIAS,
+ DEFAULT_TASK_QUEUE_NAME,
+ Task,
+ TaskContext,
+ TaskResult,
+ TaskResultStatus,
+ task,
+)
+from .exceptions import InvalidTaskBackend
+
+__all__ = [
+ "DEFAULT_TASK_BACKEND_ALIAS",
+ "DEFAULT_TASK_QUEUE_NAME",
+ "default_task_backend",
+ "task",
+ "task_backends",
+ "Task",
+ "TaskContext",
+ "TaskResult",
+ "TaskResultStatus",
+]
+
+
+class TaskBackendHandler(BaseConnectionHandler):
+ settings_name = "TASKS"
+ exception_class = InvalidTaskBackend
+
+ def create_connection(self, alias):
+ params = self.settings[alias]
+ backend = params["BACKEND"]
+ try:
+ backend_cls = import_string(backend)
+ except ImportError as e:
+ raise InvalidTaskBackend(f"Could not find backend '{backend}': {e}") from e
+ return backend_cls(alias=alias, params=params)
+
+
+task_backends = TaskBackendHandler()
+
+default_task_backend = ConnectionProxy(task_backends, DEFAULT_TASK_BACKEND_ALIAS)