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 hashes)

Uploaded Source

Built Distribution

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

Uploaded Python 3

Supported by

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