Mam kilka żądań Django, które wykonują obliczenia matematyczne (zapisane w C i wykonywane przez moduł Cython), które mogą zająć nieokreśloną ilość (rzędu 1 sekundy) czasu do wykonania. Również żądania nie muszą mieć dostępu do bazy danych i są niezależne od siebie nawzajem i od Django.Procesor asynchroniczny Django
Teraz wszystko jest synchroniczne (używając Gunicorn z typami pracującymi sync
), ale chciałbym, aby było to asynchroniczne i nieblokujące. W skrócie chciałbym zrobić coś:
- Otrzymuj żądania AJAX
- przydzielać zadania do dostępnego pracownika (bez blokowania głównego aplikacji internetowej Django)
- Pracownik wykonuje zadania w jakiejś nieznanej ilości czasu
- Django zwraca wynik obliczeń (listę ciągów) jako JSON, gdy zadanie kończy
Jestem bardzo nowym asynchronicznym Django, a więc moje pytanie brzmi, co jest najlepszym stos fo r robi to.
Czy jest to proces, do którego dobrze nadaje się kolejka zadań? Czy ktoś poleciłby Tornado + Celery + RabbitMQ, czy może coś innego?
Z góry dziękuję!
Co robisz z wynikami obliczeń? – sdolan
Powróć wynik (jako JSON) do przeglądarki użytkownika. –