Recently I came to know about Django channels. Can somebody tell me the difference between channels and celery, as well as where to use celery and channels.
Channels in Django are meant for asynchronous handling of requests.
The standard model Django uses is Request-Response but that has significant limitations. We cannot do anything outside the restrictions of that model.
Channels came about to allow Web Socket support and building complex applications around Web Sockets, so that we can send multiple messages, manage sessions, etc.
Celery is a completely different thing, it is an asynchronous task queue/job queue based on distributed message passing. It is primarily for queuing tasks and scheduling them to run at specific intervals.
Simply put Channels are used when you need asynchronous data communication like a chat application, and Celery is for scheduling tasks and events like a server scraping the web for a certain type of news at fixed intervals.