У меня есть куча запросов Django, выполняющая некоторые математические вычисления (написанные на C и выполняемые через модуль Cython), которые могут принимать неопределенное количество (порядка 1 секунды) времени для выполнения. Кроме того, запросы не нуждаются в доступе к базе данных и не зависят друг от друга и Django.Django Asynchronous Processing
Сейчас все синхронно (с использованием Gunicorn с рабочими типами sync
), но я хотел бы сделать это асинхронным и неблокирующим. Короче говоря, я хотел бы сделать что-то:
- Получить запрос AJAX
- Выделяют задачу к свободному работнику (без блокировки основного веб-приложение Django)
- работник выполняет задание в какой-то неизвестное количество времени
- Джанго возвращает результат вычисления (список строк) в формате JSON, когда задача завершает
Я новичок в асинхронном Django, и поэтому мой вопрос, что это лучший стек Ф.О. r делать это.
Это какой-то процесс, для которого хорошо подходит задача? Кто-нибудь порекомендует Tornado + Celery + RabbitMQ или, возможно, что-то еще?
Заранее благодарен!
Что вы будете делать с результатами вычислений? – sdolan
Вернуть результат (как JSON) в браузер пользователя. –