22

これら 3 つのフレームワークの違いを理解するのに少し苦労しています。

これら 3 つのフレームワークを使用してコードを同時に実行できますが、異なる量のスレッド/プロセスまたはコードスタイルを使用して異なる方法でこれを実行します。これが私が今違いを理解している方法です:

  • Tornado/Twistedは、I/O ループによって制御される非同期コードを使用します。これにより、コードを単一のスレッドで実行できます (ノンブロッキング コードがある場合、これは不要なので、複数のスレッドは役に立ちません)。
  • Celeryはタスク ベースのシステムを使用してコードを非同期で実行しますが、コード自体は依然として同期しています。異なるプロセス上の他のワーカー間で異なるタスクを分散できるメイン プロセスが存在します。
  • Geventはスレッド ベースのシステムを使用し、スレッドを生成してさまざまな着信接続を処理します。

私が今持っている質問は次のとおりです。

  1. これらのフレームワークに関する私の理解は正しいですか?
  2. スレッドとプロセスの主な違いは、異なるスレッドは同じメモリを使用しますが、プロセスは使用しないことです。通常、1 つのプロセスは 1 つのサーバー コアで実行されますか? (したがって、セロリを小さなサーバーに実装するのが難しくなります)
  3. webapplications と socketsについて話している場合:

Tornado/Twisted非同期コードを使用し、I/O ループで要求をキューに入れるため、(ほぼ) 任意の量のソケットを受け入れることができます。

Celery /Geventはこれを行うことができますか? 新しいソケットを受け入れるために、新しいプロセス/スレッドを生成する必要がありますか?

私は、これらのテクノロジのどれがリアルタイム Web アプリケーションの構築に最も適しているかを理解しようとしています。

4

1 に答える 1