2012-01-15 4 views
0

django-celery(バックエンドとしてrabbitmqを使用)でいくつかのタスクを実行しているので、タスクは時間がかかり、CPUが集中します。ジャンゴ・セロリステータスが受信されましたか?

私は2つのワーカーEc2インスタンスを持っています(1つは小さく、もう1つは高いCPUコアです)。

Iveは1つの並行タスクを実行するように小さなインスタンスを設定し、メディアは4を実行します。これは私にとってはうまく機能します。しかし、セミモニターでは、小さいインスタンスがタスクを処理していることがわかります.2つまたは3つのタスクが「RECEIVED」状態(小さなインスタンスに割り当てられています)にあり、中インスタンスは何もしていません。理想的には、メディアインスタンスのように小さいものよりも優先させることができますが、この場合、小さい場合は並行性があり、タスクはメディアに移動する必要があります。それは小さなインスタンスがそれを噛むこと以上に噛み付いているようです..それは、それが瞬時に開始できないタスクを自分自身に割り当てるように。

労働者にその瞬間に開始できる作業のみを受け入れる方法はありますか?

スクリーンショット:http://dl.dropbox.com/u/361747/task-state.png domUで始まる作業者は小さく、ipで始まる作業者はmediumです。

答えて

1

CELERYD_PREFETCH_MULTIPLIERオプションを使用して、プリフェッチするタスクの数を制御できます。あなたのケースでは、CELERYD_PREFETCH_MULTIPLIER = 1はタスクを均等に分散するのに役立ちます。

http://ask.github.com/celery/configuration.html#celeryd-prefetch-multiplier

+0

ありがとう、その設定については知りませんでした。今日後でテストします。 – sajal

関連する問題