いくつかの処理ジョブを追加するための REST API を提供する Django アプリケーションを構築します。
要求ごとに、後で処理するためにジョブがデータベースに追加されます。
ジョブはカスタム コマンドで処理できます ( ./manage.py runJobs
)
これらのジョブは CPU を集中的に使用するため、4 コアのマシンで実行している場合、ジョブを並行して実行する最大4 つのワーカーが必要です。
スケーリングする必要がある場合は、別のマシンで同じワーカーをより多く実行できるようにする必要があります。
ジョブの処理は大量のメモリを消費するので、ジョブごとに新しいプロセスを作成する、つまり、同じプロセスで多くのジョブを実行するよりも、1 つのジョブ./manage.py runJobs
を実行して終了する方がよいと思います。
競合状態によって 2 人のワーカーが同じ仕事に就かないようにする必要があります。
私は Linux プロセス間の通信にあまり詳しくないので、ヒントを得るためにここに来るのは良い考えだと思いました。
この問題を解決するためにどのアーキテクチャを提案しますか?