2016-07-27 18 views

Trả lời

15

Channels trong Django có nghĩa là xử lý yêu cầu không đồng bộ.
Mô hình chuẩn sử dụng Django là Request-Response nhưng có những hạn chế đáng kể. Chúng ta không thể làm gì ngoài những hạn chế của mô hình đó.
kênh đã về để cho phép hỗ trợ Web Socket và xây dựng các ứng dụng phức tạp xung quanh Web Sockets, để chúng ta có thể gửi nhiều tin nhắn, quản lý phiên vv

Celery là một điều hoàn toàn khác nhau, nó là một hàng đợi công việc không đồng bộ/hàng đợi công việc dựa trên việc truyền thông điệp được phân phối. Nó chủ yếu cho việc xếp hàng nhiệm vụ và lên lịch cho chúng chạy trong các khoảng thời gian cụ thể.

kênh một cách đơn giản được sử dụng khi bạn cần asynchronous data communication giống như một ứng dụng chat và Cần tây là dành cho nhiệm vụ lập kế hoạch và các sự kiện như một máy chủ cào trên web cho một loại tin tức trong khoảng thời gian cố định.

+8

Kênh Django hỗ trợ xử lý nền. Tôi nghĩ rằng câu hỏi là nhiều hơn, cách xử lý nền kênh django khác với công nhân cần tây. – therealsachin

+1

Bạn nói "Cần tây là một điều hoàn toàn khác". Tôi nghĩ từ quan điểm cấp cao, họ không hoàn toàn khác biệt. Chuyện gì xảy ra? Nhập, xử lý, xuất :-) Xem: https://en.wikipedia.org/wiki/IPO_model – guettli

1

Kênh Django cung cấp cho django khả năng xử lý nhiều hơn chỉ các yêu cầu HTTP đơn giản, bao gồm cả Websockets và HTTP2. Hãy coi đây là giao tiếp song công 2 chiều xảy ra không đồng bộ Không có trình duyệt làm mới. Nhiều khách hàng có thể gửi và nhận dữ liệu qua websocket và các kênh django dàn dựng ví dụ liên lạc này, một cuộc trò chuyện nhóm với khách hàng đồng thời truy cập cùng một lúc. Bạn có thể đạt được quá trình xử lý nền của mã hoạt động lâu dài với mô hình cần tây đến một mức độ nhất định, nhưng việc áp dụng các kênh khác với kênh cần tây.

Cần tây là hàng đợi công việc không đồng bộ/hàng đợi công việc dựa trên việc truyền thông điệp được phân phối. Cũng như lập kế hoạch. Trong thuật ngữ leman, tôi muốn bắn và chạy một nhiệm vụ trong nền hoặc tôi muốn có một nhiệm vụ định kỳ cháy và chạy ở phía sau trên một khoảng thời gian thiết lập. Bạn cũng có thể bắn nhiệm vụ theo cách đồng bộ cũng như lửa và chờ cho đến khi hoàn thành và tiếp tục. Vì vậy, sự khác biệt chính là trong trường hợp sử dụng mà họ phục vụ và mục tiêu của các khuôn khổ

5
  • Channels trong Django là dành cho WebSocket, long-poll HTTP.

  • Celery dành cho nhiệm vụ nền, hàng đợi.

Các vấn đề liên quan