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
Hashes for django_chard-0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3c9f2726feb9af26eaa839d2f2990719612a26bb8f8a5406b74c077523e92a87 |
|
MD5 | e71c7d54f430b4ecff1ea5451811e5f4 |
|
BLAKE2b-256 | 5e57c8767d677c11d99a4c52d025ef898cc232869b937a7ee893b9fdc4650fe1 |