私はdjango-celery(バックエンドとしてrabbitmqを使用)を介していくつかのタスクを実行していますが、タスクには時間がかかり、CPUを集中的に使用します。
2 つのワーカー Ec2 インスタンスを取得しました (1 つは小規模で、もう 1 つは高 CPU 中)。
スモール インスタンスを 1 つの同時タスクを実行するように設定し、ミディアム インスタンスを 4 つ実行するように設定しました。これは私にとってはうまく機能します。しかし、ときどき、セロリ モニターで、小さなインスタンスがタスクで動作しており、さらに 2 つまたは 3 つのタスクが "RECEIVED" 状態 (小さなインスタンスに割り当てられている) であるのに対し、中型のインスタンスは何もしていないことがわかります。理想的には、中規模のインスタンスが小規模インスタンスよりも優先されるようにする必要がありますが、この場合、小規模インスタンスが同時実行可能である場合、タスクは中規模インスタンスに移動する必要があります。小さなインスタンスは、噛むことができる以上のものを噛んでいるようです.. 現時点では開始できないタスクをそれ自体に割り当てる場合と同様です。
ワーカーがその時点で開始できるタスクのみを受け入れるようにする方法はありますか?
スクリーンショット: http://dl.dropbox.com/u/361747/task-state.png . domU で始まるワーカーは small で、ip で始まるワーカーは medium です。