Celery がタスクをスレッドで実行するか、別の子プロセスで実行するかを誰か教えてもらえますか? ドキュメントはそれを説明していないようです(3回読んでください)。スレッドの場合、どのように GIL を通過するのですか (特に、イベントが誰にどのように通知されるか)。
セロリの非同期と Twisted のリアクター モデルをどのように比較しますか? 結局セロリはリアクターモデルを使っているのですか?
ありがとう、
Celery がタスクをスレッドで実行するか、別の子プロセスで実行するかを誰か教えてもらえますか?
どちらも、タスクはおそらく別のマシン上の別のプロセスで実行されます。「遅延」を呼び出すスレッドの子プロセスではありません。-C および -P オプションは、ワーカー プロセスが独自のスレッドを管理する方法を制御します。ワーカー プロセスは、完全に独立したメッセージ サービスを介してタスクを取得します。
セロリの非同期と Twisted のリアクター モデルをどのように比較しますか? 結局セロリはリアクターモデルを使っているのですか?
Twisted はイベント キューです。非同期ですが、並列処理用には設計されていません。
-c と -P は、セロリ ワーカーの同時実行関連のオプションです。
-c CONCURRENCY, --concurrency=CONCURRENCY キューを処理している子プロセスの数。の デフォルトは、使用可能な CPU の数です。 システム。 -P POOL_CLS, --pool=POOL_CLS プールの実装: プロセス (デフォルト)、イベントレット、 gevent、ソロ、またはスレッド。
イベントレットの使用: http://docs.celeryproject.org/en/latest/userguide/concurrency/eventlet.html#enabling-eventlet
http://docs.celeryproject.org/en/latest/internals/reference/celery.concurrency.processes.html