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!
📨 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
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d979969941c584fe402310746d3f540cba90c844b9be91c50a450f984fd180dc
|
|
| MD5 |
319e4c1b5b7a317f2ee554b434d28416
|
|
| BLAKE2b-256 |
80ba32b1d97804fbee7ede7b3bd16db7dd41009e197a49ead9f2003acf6c21a2
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3c9f2726feb9af26eaa839d2f2990719612a26bb8f8a5406b74c077523e92a87
|
|
| MD5 |
e71c7d54f430b4ecff1ea5451811e5f4
|
|
| BLAKE2b-256 |
5e57c8767d677c11d99a4c52d025ef898cc232869b937a7ee893b9fdc4650fe1
|