セロリを使用して、リモート イメージの取得、ユーザーへのメール送信などの IO タスクを実行します。ただし、セロリはログなしでブロックされることがあります。現時点では、送信したタスクは実行されません。再起動する必要があります。ブロックされた場所で機能し始めます。
それは私を非常に長い間困惑させます。私に何ができる ?また、セロリを使用して IO タスクを分散するためのベスト プラクティスは何ですか?
デフォルトでは、セロリ ワーカーは、クライアントからのタスク リクエストを待機するいくつかのプロセスを fork します。保留中の IO のタスクの場合、システムは要求を同時に処理するより多くの同時実行数を必要とします。コマンドは次のとおりです。
celery -A tasks worker --without-heartbeat -P threads --concurrency=10
同時収入リクエストが多い場合は、同時実行レベルを着信リクエスト バーストのサイズより高く設定する必要があります。システムのパフォーマンスは、ハードウェアのメモリ サイズまたは OS の選択 API によって制限される場合があります。同時実行性が大きい場合は、セロリのスレッド/ gevent モデルを使用できます。
celery -A tasks worker --without-heartbeat -P threads --concurrency=1000
また
celery -A tasks worker --without-heartbeat -P gevent --concurrency=1000
セロリの同時実行性を高めることができます
manage.py celeryd --concurrency=3
ここで、並行性 == プロセッサーの数
シェルコマンドを実行
grep -c プロセッサ /proc/cpuinfo
マシンのプロセッサ数を取得するには