Active Job for Django
Project description
Active Job for Django
Example usage
Define tasks in a tasks.py module within a Django app:
from django.core.mail import send_mail from pydantic import BaseModel import django_generic_tasks as tasks # define task params as a Pydantic BaseModel class EmailNotificationParams(BaseModel): subject: str content: str recipients: list[str] # subclass Task and specify params type as a generic type argument and implement the run method class EmailNotificationTask(tasks.Task[EmailNotificationParams]): def run(self): send_mail( subject=self.params.subject, message=self.params.content, from_email=None, recipient_list=self.params.recipients, ) if __name__ == "__main__": params = EmailNotificationParams( subject="Hello", content="Have a nice day", recipients=["alice@example.com", "bob@example.com"], ) task = EmailNotificationTask(params) # run a task synchronously task.run() # run a task asynchronously using settings.TASKS_BACKEND task.start()
Registering tasks
Similar to signals, tasks have to be implicitly registered by ensuring they are imported during application startup. This can be done in the ready method in an application’s AppConfig.
from django.apps import AppConfig class MyAppConfig(AppConfig): default_auto_field = "django.db.models.BigAutoField" name = "my_app" def ready(self): from . import tasks # noqa: F401
HTTP endpoints
from django.contrib import admin from django.urls import include, path urlpatterns = [ path("admin/", admin.site.urls), path("tasks/", include("django_generic_tasks.urls")), ]
django-generic-tasks uses django-ninja to automatically expose API endpoints for running tasks. Each defined task gets its own API endpoint and uses the specified Pydantic BaseModel for parameter verification.
Supported backends
ThreadingBackend
Runs tasks in a new threading.Thread.
CloudTasksBackend
Runs tasks using Cloud Tasks HTTP Target tasks.
Configuration
TASKS_API_AUTHENTICATION
Specifies the Python path to a function or class whose instances are callable to use to authenticate incoming task API calls. The function or callable class should accept a single parameter request representing the incoming request.
Type: Optional[str]
Default: django_generic_tasks.security.BasicAuth
Examples:
my_app/authentication.py
# function def authenticate(request): """Only allow requests from localhost""" return request.META["REMOTE_ADDR"] == "127.0.0.1" # callable class instance class Authenticator: def __call__(self, request): """Only allow requests from localhost""" return request.META["REMOTE_ADDR"] == "127.0.0.1"
my_app/settings.py
TASKS_API_AUTHENTICATION = "my_app.authentication.authenticate" # or TASKS_API_AUTHENTICATION = "my_app.authentication.Authenticator"
Built-in authentication methods:
django_generic_tasks.security.GoogleOIDCAuth - Enforces that incoming requests contain a Google-issued OIDC token in the authorization header. This can be automatically added to requests from Cloud Tasks and Cloud Scheduler.
django_generic_tasks.security.BasicAuth - Authenticates basic auth credentials using the Django authentication system
django_generic_tasks.security.NoAuth - No authentication, useful for development.
TASKS_BACKEND
The default backend to use to run tasks asynchronously.
Type: any class which implements the django_generic_tasks.backends.Backend protocol
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file django-generic-tasks-0.5.1.tar.gz
.
File metadata
- Download URL: django-generic-tasks-0.5.1.tar.gz
- Upload date:
- Size: 5.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.11 CPython/3.10.4 Darwin/21.5.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bfe6fee81c03a174d0d1881a15edf6a6d760ea3dde10745b938f21ac88717f9f |
|
MD5 | aa323967623701ab260722b51086a102 |
|
BLAKE2b-256 | 4f1cdd8d917de63adae81a0edc3932c54c936a6d2983093ea9bb3f7311e4ce37 |
File details
Details for the file django_generic_tasks-0.5.1-py3-none-any.whl
.
File metadata
- Download URL: django_generic_tasks-0.5.1-py3-none-any.whl
- Upload date:
- Size: 6.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.11 CPython/3.10.4 Darwin/21.5.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 46834fc75d286be4dc3fab9bb33434f4a8f5fc5f5f3ff7dd53b3b9e918bdfa35 |
|
MD5 | cd216e4d1cfc9f74cadca7b8be6de5ea |
|
BLAKE2b-256 | 995c28dbe66b23e7c4b35d92cf20494d5e0da3f7d411fa6fba8a87005885d1d4 |