問題タブ [eventlet]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - グリーンスレッドは「本物の」スレッドに等しい
Unterstanding eventlet.wsgi.serverからサンプル コードを取得しました。
異なるクライアント IP アドレスを介して Web サーバーにアクセスすると、それらが並行して処理されていることがわかります。また、印刷をhello_world使用すると、それらが 2 つの異なるグリーンスレッドで処理されているが、同じ OS スレッドで処理されていることもわかります。
私はPythonが初めてです。各グリーンスレッドが基礎となる OS スレッドに関連付けられているかどうかに興味がありますか?
django - Gunicorn+eventlet タイムアウト
イベントレットワーカー(djangoアプリ)でgunicornを実行しようとしています:
2 つの悪いビューがある場合:
オプション -t (--timeout) は、view2 に対してのみ意味があります (worker がハングし、gunicorn がそれを理解できるため)。しかし、gunicorn は悪いビュー 2 を処理しません。
実際のケースでは、time.sleep() またはその他のモンキー パッチを適用したメソッドを使用した無限ループがいくつかあり、しばらくするとアプリケーションはハングしませんが、多くの無限の緑色のスレッドがあり、ゆっくりと動作を開始します。
私の質問は、ビュー1の何が問題なのかを理解してワーカーを再起動できるようにgunicornをセットアップする方法です。
python - ソースとして異なる MAC アドレスを持つ 1,000 の Web クライアントをシミュレートする
私は次の必要があります:
- IP アドレスに対して 1K (またはそれ以上) の Web クライアント (つまり、http 要求) をシミュレートします。
- 各クライアントは、異なる Mac をソースとして使用する必要があります。
- つまり、このクライアントからの最大同時リクエストを (基本的な制限の下で) 取得したいと考えています。
- これらすべてを同じマシンで
- Linux を使用しています。
私の質問: 1 秒あたりのユーザー数とリクエスト数を最大化するにはどうすればよいですか?
私は自分がやっていることをかなり確信しています (99% :))。これらのリクエストは、OpenFlow スイッチに基づく特別な使用例であるため、送信元として別の MAC アドレスを使用して送信する必要があります。しかし、このシナリオを問題に拡張することは無関係です。
PS私は現在、Eventlet Networking Libraryを使用してPythonで作業しています。Python/Eventlet は必須ではありませんが、特定の緊急性があり、コードの迅速な実装/変更が有益であるため、ここに含めます。仮想インターフェイスを別の MAC アドレスに関連付けることができるのではないかと考えていましたが、要求インターフェイスを指定する方法がありません。
python - dnspython と「ルックアップがタイムアウトしました」
Django、Celery、Eventlet、および dnspython を使用して、約 500 の rss フィードを非同期解析しています。
dnspython を使用すると、同時に 20 を超えるフィードを解析しようとすると、「ルックアップ タイムアウト」エラーが発生します。dnspython をアンインストールするとすべて問題なく動作しますが、dns ルックアップがセロリ プールをブロックしているため、時間がかかります。どうすれば修正できるか考えはありますか?
これは私のセロリタスクコードです:
Ubuntu 12.04 LTS を使用しています
python - threading モジュールよりも Python で Eventlet モジュールを使用する利点は何ですか?
具体的には、Eventlet の GreenPool クラスです。マルチパートアップロードの個々の部分として大きなファイルを S3 にアップロードするコードをいくつかテストしました。これまでに気づいたことは、eventlet を使用すると CPU 使用率が大幅に低下することです。スレッドを使用するだけでなく、Eventlet の他の長所と短所を探しています。ありがとう。
python - python eventlet - tpool VS Greenpool をいつ使用するか
私の理解では、tpool はネイティブ スレッドのプールを提供し、Greenpool はグリーン スレッドのプールを提供します (基本的に、すべてのグリーン スレッドは単一のネイティブ スレッドにあります)。
tpool
結果: 異なるネイティブ スレッド
/li>グリーンプール
結果: 緑のスレッドが同じネイティブ スレッドで実行される
/li>
あるプールと別のプールをいつ使用するか教えてください。
python - マルチコア間で並列に動作するように Python アプリケーションを設計する方法
私の知る限り、Python では、マルチコア環境で通常のスレッドを使用すると、通常、GIL が途中で発生し、パフォーマンスに悪影響を及ぼします (スレッドが GIL を常に取得および解放しようとし、スレッド/プロセッサ間の多くのコンテキスト切り替え)。
そのため、多くの人がグリーン スレッド (eventlet など) を使い始めています。イベントレット ライブラリを使用すると、複数のグリーン スレッドを協調して動作させることができ、単一のプロセッサで完全に動作します (同期の問題が少なく、迅速な生成/効率など)。
私の質問は、マルチコア OS を使用していて、Python アプリケーションを設計する場合、協調スレッド (グリーン スレッド) とマルチコア プロセッサの両方を利用するために従うべきベスト プラクティスまたは設計パターンは何かということです。
python - python eventlet - file async(non-blocking) io
According to eventlet document :
I know non-blocking I/O here covers the case when you interact with sockets. After the socket gets greened/patched by eventlet, the socket connection becomes non-blocking.
My questions is: Does this non-blocking I/O here covers file I/O as well?
python - イテレータ関連の可能性がある Eventlet GreenPile オブジェクトからデータを取得します
私は現在、基本的には以前に作成した単純な監視スクリプトを変更しています。
とりわけ、以下を含む辞書のリストを作成します
- ウェブサイトの URL
- 応答にかかった時間 (デフォルトでは [なし] に設定)
- 送り返されたデータ (デフォルトでは [なし] に設定)
リストから各 URL をクエリ (GET) し、「時間」フィールドと「データ」フィールドに関連データを入力します。
結果をデータベースに保存します。
スクリプトは以前は問題なく動作していましたが、監視する URL のリストが増えるにつれて、すべてのクエリを完了するのにかかる時間が長くなりすぎました。
私の解決策は、スクリプトを変更して URL を同時にフェッチすることです。これを行うために、私はeventletを使用することにしました。これは、ドキュメントのこの例が、私が望んでいることをほぼ正確に実行するためです。
問題は、URL のリストに辞書が含まれているため、リストpool.imap()を反復処理するために使用できないことです。(私の知る限りでは)
Eventlet のドキュメントには、GreenPile オブジェクトを使用してジョブを生成する別の同様の例* があり、それを使用して URL フェッチ機能を起動できるようですが、このスレッドの結果を取得できないようです。
ここに私のテストコードがあります:
私が理解している限りpile、イテラブルであるため、イテレートできますが、インデックスを介してコンテンツにアクセスできません。これは正しいですか?
では、どのように (それは可能ですか?)urlsリストに直接入力できますか? 別の解決策は、URLの「フラット」リスト、URL、応答時間、およびデータを含む別のリストを作成pool.imap()し、最初のリストで使用して2番目のリストにそれを入力することですが、辞書のリストを保持したい.
※このアカウントでは 3 つ以上のリンクを投稿することはできません。イベントレット ドキュメントの「デザイン パターン - ディスパッチ パターン」ページを参照してください。