diff options
| author | Jake Howard <git@theorangeone.net> | 2025-07-17 12:51:09 +0100 |
|---|---|---|
| committer | nessita <124304+nessita@users.noreply.github.com> | 2025-09-16 17:28:32 -0300 |
| commit | 4289966d1b8e848e5e460b7c782dac009d746b20 (patch) | |
| tree | ef1d61a33562579d985c762036db5f7aa01406fc /django/tasks/__init__.py | |
| parent | 218f69f05eb51da1ea17d62a914a67ceff5bfd55 (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__.py | 45 |
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) |
