2016-07-27 6 views

Antwort

15

Channels in Django sind für die asynchrone Behandlung von Anfragen gedacht.
Das Standardmodell, das Django verwendet, ist Request-Response, weist jedoch erhebliche Einschränkungen auf. Wir können nichts außerhalb der Beschränkungen dieses Modells tun.
Kanäle kam WebSocket-Unterstützung und den Aufbau komplexer Anwendungen rund um Web Sockets, zu ermöglichen, so dass wir mehrere Nachrichten senden können, Sitzungen verwalten usw.

Celery eine ganz andere Sache ist, es eine asynchrone Aufgabe Warteschlange/Jobwarteschlange basierend auf verteilter Nachrichtenübergabe. Es dient hauptsächlich dazu, Aufgaben in Warteschlangen einzureihen und deren Ausführung in bestimmten Intervallen zu planen.

Einfach ausgedrückt Kanäle verwendet werden, wenn Sie asynchronous data communication wie eine Chat-Anwendung benötigen, und Sellerie ist für die Planung von Aufgaben und Ereignisse wie ein Server im Internet für eine bestimmte Art von Nachrichten in festen Abständen Schaben.

+8

Django-Kanäle unterstützt Hintergrundverarbeitung. Ich denke, die Frage ist mehr auf, wie Django-Kanäle Hintergrundverarbeitung von Sellerie Arbeitnehmer unterscheidet. – therealsachin

+1

Sie sagten "Sellerie ist eine ganz andere Sache". Ich denke, dass sie aus der höheren Perspektive nicht völlig verschieden sind. Was geschieht? Eingabe, Verarbeitung, Ausgabe :-) Siehe: https://en.wikipedia.org/wiki/IPO_model – guettli

1

Django-Kanäle geben django die Möglichkeit, mehr als nur einfache HTTP-Anfragen zu verarbeiten, einschließlich Websockets und HTTP2. Stellen Sie sich dies als 2-Wege-Duplex-Kommunikation vor, die asynchron abläuft Kein Browser wird aktualisiert. Mehrere Clients können Daten über Websocket und Django-Kanäle senden und empfangen. Bei diesem Interkommunikations-Beispiel wird ein Gruppen-Chat mit gleichzeitig zugreifenden Clients orchestriert. Sie können eine Hintergrundverarbeitung von lang laufendem Code erreichen, der dem eines Selleries in gewissem Ausmaß ähnlich ist, aber die Anwendung von Kanälen unterscheidet sich von der von Sellerie.

Sellerie ist eine asynchrone Aufgabenwarteschlange/Jobwarteschlange, die auf der verteilten Nachrichtenübermittlung basiert. Sowie die Planung. Auf leman-Ebene möchte ich eine Aufgabe im Hintergrund abfeuern und ausführen, oder ich möchte eine periodische Aufgabe haben, die in einem bestimmten Intervall feuert und läuft. Sie können die Aufgabe auch auf eine synchrone Art und Weise auslösen und warten, bis sie abgeschlossen ist und fortfahren. So ist der wesentliche Unterschied in den Anwendungsfall dienen sie und Ziele der Gerüste

5
  • Channels in Django für WebSocket ist, long-poll HTTP.

  • Celery ist für Hintergrundaufgabe, Warteschlange.

Verwandte Themen