19

セロリの労働者の数を制限する方法はありますか?私は小さなサーバーを持っていて、セロリは常に1つのコアプロセッサで10のプロセスを作成します。この数を3プロセスに制限したいと思います。

4

4 に答える 4

32

settings.pyファイルで同時実行性を1に設定し、max_tasks_per_childを1に設定して、3つのタスクを同時に実行してみました。1つのプロセスをユーザーとして生成し、他の2つのプロセスをセロリとして生成します。1つのプロセスを実行し、それが終了するのを待ってから、もう1つのプロセスを実行する必要があります。

djangoセロリを使用しています。

編集{

settings.pyファイルにCELERYD_CONCURRENCY=1を書き込んで、同時実行性を割り当てていました。しかし、「tail -f /var/log/celery/w1.log」を使用してセロリのログファイルを見ると、同時実行性に8の値が割り当てられていることがわかりました。これは、setting.pyが同時実行性を変更しないことを教えてくれました。この問題を修正するために、「/ etc / default/celeryd」ファイルに次の行を追加しました。

# Extra arguments to celeryd
CELERYD_OPTS="--concurrency=1"

これで、キュー内の2番目のタスクは、最初のタスクが終了するまで待機します。

}

于 2012-08-31T14:56:03.743 に答える
9

celery worker --concurrencyオプションを使用すると、キューを処理する子プロセスの数を指定できます。

于 2012-08-31T11:25:42.210 に答える
1

これはceleryd-configファイルにあります

CELERYD_NODES=2

その結果、

$ ps -ef | grep "celery" | grep -v "grep"
www-data  1783     1  0 17:50 ?        00:00:46 /usr/bin/python /opt/webapps/repo/manage.py celeryd --loglevel=INFO -n celery1.xxx-31-39-06-74-75 --logfile=/var/log/celery/1.log --pidfile=/var/run/celery/1.pid 
www-data  1791  1783  0 17:50 ?        00:00:01 /usr/bin/python /opt/webapps/repo/manage.py celeryd --loglevel=INFO -n celery1.xxx-31-39-06-74-75 --logfile=/var/log/celery/1.log --pidfile=/var/run/celery/1.pid
www-data  1802     1  0 17:50 ?        00:00:52 /usr/bin/python /opt/webapps/repo/manage.py celeryd --loglevel=INFO -n celery2.xxx-31-39-06-74-75 --logfile=/var/log/celery/2.log --pidfile=/var/run/celery/2.pid 
www-data  1858  1802  0 17:50 ?        00:00:01 /usr/bin/python /opt/webapps/repo/manage.py celeryd --loglevel=INFO -n celery2.xxx-31-39-06-74-75 --logfile=/var/log/celery/2.log --pidfile=/var/run/celery/2.pid

2つではなく4つのプロセスがありますが、2つのワーカーがあります。各ワーカースレッドには2つのプロセスがあるようです。したがって、おそらくCELERYD_NODESを3に設定すると、3つのワーカーが得られますが、6つのプロセスが得られます。

于 2012-10-02T20:54:27.663 に答える
0

セロリオプションパラメータで--autoscale=3を試してください。

于 2018-09-21T09:43:09.643 に答える