Skip to main content

A very simple async/await background task queue for Django.

Project description

Chard

Chard is a simple async/await background task queue for Django. One process, no threads, no other dependencies.

It uses Django's ORM to keep track of tasks. This is a new project under active development. PRs are welcome!

📖 Documentation

📨 Sign up to the newsletter to get news and updates

🔗 Check the example Django project

Requirements

  • Python 3.8+
  • Django 4.1+

Installation

pip install django-chard

Quickstart

First add chard anywhere in your INSTALLED_APPS setting and then run the migrations:

python manage.py migrate

Create a file called tasks.py in one of your apps and define a task:

import chard
import httpx
from asgiref.sync import sync_to_async

from .models import MyModel

@chard.task
async def my_task(country_code):
    url = f"https://somewhere.com/some-api.json?country_code={country_code}"
    async with httpx.AsyncClient() as client:
        resp = await client.get(url)
        obj = resp.json()
    for item in obj["items"]:
        await sync_to_async(MyModel.objects.create)(
          country_code=country_code,
          item=item
        )

To fire a task for the worker:

# Note that all arguments must be JSON serializable.
my_task.send("gb")

Run the worker process and it will watch for new pending tasks:

python manage.py chardworker

To see a full example of Chard in action:

🔗 Check the example Django project

Contributing

Please see CONTRIBUTING the contributing guidelines.

License

Please see LICENSE for licensing details.

Changelog

0.2 (2022-09-16)

- Type hinting
- Return a task ID when queueing a task
- Added docs
- Tidying and bug fixes

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-chard-0.2.tar.gz (7.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_chard-0.2-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

Details for the file django-chard-0.2.tar.gz.

File metadata

  • Download URL: django-chard-0.2.tar.gz
  • Upload date:
  • Size: 7.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.5

File hashes

Hashes for django-chard-0.2.tar.gz
Algorithm Hash digest
SHA256 d979969941c584fe402310746d3f540cba90c844b9be91c50a450f984fd180dc
MD5 319e4c1b5b7a317f2ee554b434d28416
BLAKE2b-256 80ba32b1d97804fbee7ede7b3bd16db7dd41009e197a49ead9f2003acf6c21a2

See more details on using hashes here.

File details

Details for the file django_chard-0.2-py3-none-any.whl.

File metadata

  • Download URL: django_chard-0.2-py3-none-any.whl
  • Upload date:
  • Size: 8.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.5

File hashes

Hashes for django_chard-0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3c9f2726feb9af26eaa839d2f2990719612a26bb8f8a5406b74c077523e92a87
MD5 e71c7d54f430b4ecff1ea5451811e5f4
BLAKE2b-256 5e57c8767d677c11d99a4c52d025ef898cc232869b937a7ee893b9fdc4650fe1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page