Django Channels and Celery Example

本项目展示了如何使用 Celery 任务队列设置 Django Channels 项目。「This project shows how to setup a Django Channels project with a Celery task queue.」

Github stars Tracking Chart

Django Channels and Celery Example

This project shows how to setup a Django Channels project with a Celery task queue. The user can start a long running background task and get immediate notification when the task completes without a browser refresh.

You can see an example deployment at http://tasker.vincenttide.com. Note that this deployment contains some extra stuff not covered in this repository.

To run this project you will need to install Redis. It is used both as the Channels layer backend and as the Celery broker.

Then just run:

pip install -r requirements.txt
python manage.py makemigrations
python manage.py migrate
python manage.py runserver  # Start daphne and workers
celery worker -A example -l info  # Start celery workers

How to Send Reply Back to Browser Client

The code block below shows how to send a reply back to the browser that originated the task request. message.reply_channel.name contains a unique address in the form of websocket.send!hjnsMbQPiefT.

Channel(reply_channel).send({
    "text": json.dumps ({
        "action": "completed",
        "job_id": job.id,
        "job_name": job.name,
        "job_status": job.status,
    })
})

Overview

Name With OwnerVincentTide/django-channels-celery-example
Primary LanguagePython
Program languagePython (Language Count: 2)
Platform
License:
Release Count0
Created At2016-07-21 00:32:31
Pushed At2017-12-27 01:51:48
Last Commit At2016-08-21 18:43:11
Stargazers Count132
Watchers Count4
Fork Count41
Commits Count14
Has Issues Enabled
Issues Count2
Issue Open Count1
Pull Requests Count1
Pull Requests Open Count1
Pull Requests Close Count0
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private
To the top