Django Asynchrone Verarbeitung

Ich habe eine Reihe von Django-requests, die führt einige mathematische Berechnungen ( in C geschrieben und ausgeführt werden, die über eine Cython-Modul ), die in einer unbestimmten Menge ( in der Größenordnung von 1 Sekunde ) der Zeit für die Ausführung. Auch die Anfragen, die nicht benötigen Zugriff auf die Datenbank und sind alle unabhängig voneinander und Django.

Recht jetzt alles synchron ( mit Gunicorn mit sync Arbeiter-Typen ), aber ich würde gerne machen das die asynchrone und nichtblockierende. Kurz gesagt ich möchte auch etwas zu tun:

  1. Empfangen der AJAX-Anfrage
  2. Zuweisen-Aufgabe an einen verfügbaren Arbeiter ( ohne die Blockierung der wichtigsten Django-web-Anwendung )
  3. Arbeiter führt die Aufgabe in irgendeiner unbekannten Zeit
  4. Django liefert das Ergebnis der Berechnung (eine Liste von strings) als JSON, wenn die Aufgabe abgeschlossen ist,

Ich bin ganz neu asynchrone Django, und so ist meine Frage was ist der beste stack, dies zu tun.

Ist diese Art von Prozess-etwas, das eine task-queue ist gut geeignet für? Würde jemand empfehlen, Tornado + Sellerie + RabbitMQ, oder vielleicht etwas anderes?

Vielen Dank im Voraus!

  • Was tun Sie mit den Ergebnissen der Berechnungen?
  • Das Ergebnis (JSON) an den browser des Benutzers.
Schreibe einen Kommentar