いくつかの数学的計算 (C で記述され、Cython モジュールを介して実行される) を実行する Django リクエストが多数ありますが、実行には不確定な時間 (1 秒程度) がかかる場合があります。また、リクエストはデータベースにアクセスする必要がなく、すべて互いに独立しており、Django からも独立しています。
現在、すべてが同期 (ワーカー型で Gunicorn を使用sync) ですが、これを非同期でノンブロッキングにしたいと考えています。要するに、私は何かをしたいと思います:
- AJAX リクエストを受け取る
- 使用可能なワーカーにタスクを割り当てます (メインの Django Web アプリケーションをブロックせずに)
- ワーカーは不明な時間でタスクを実行します
- Django は、タスクが完了するたびに、計算の結果 (文字列のリスト) を JSON として返します。
私は非同期 Django を初めて使用するので、これを行うのに最適なスタックは何かという質問があります。
この種のプロセスは、タスク キューが適しているものですか? Tornado + Celery + RabbitMQ、または他の何かを推奨する人はいますか?
前もって感謝します!