7

Celery がタスクをスレッドで実行するか、別の子プロセスで実行するかを誰か教えてもらえますか? ドキュメントはそれを説明していないようです(3回読んでください)。スレッドの場合、どのように GIL を通過するのですか (特に、イベントが誰にどのように通知されるか)。

セロリの非同期と Twisted のリアクター モデルをどのように比較しますか? 結局セロリはリアクターモデルを使っているのですか?

ありがとう、

4

2 に答える 2

4

Celery がタスクをスレッドで実行するか、別の子プロセスで実行するかを誰か教えてもらえますか?

どちらも、タスクはおそらく別のマシン上の別のプロセスで実行されます。「遅延」を呼び出すスレッドの子プロセスではありません。-C および -P オプションは、ワーカー プロセスが独自のスレッドを管理する方法を制御します。ワーカー プロセスは、完全に独立したメッセージ サービスを介してタスクを取得します。

セロリの非同期と Twisted のリアクター モデルをどのように比較しますか? 結局セロリはリアクターモデルを使っているのですか?

Twisted はイベント キューです。非同期ですが、並列処理用には設計されていません。

于 2013-08-19T17:25:46.570 に答える
2

-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

于 2013-08-19T06:49:59.703 に答える