問題タブ [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 - Eventlet+Gunicorn ワーカー スレッドには何が入りますか?
Eventlet ワーカー タイプで Gunicorn を使用して Django をデプロイし、1 つのプロセスのみを使用すると、内部で 1000 (デフォルト) のワーカー接続にサービスを提供するために何が起こりますか? Django のどの部分が各スレッドにコピーされますか? コピーされた部分はありますか?
django - django + celery + redis + postgres がハングする
プロジェクトを ms azure linux vm にデプロイしています。
各サービスは異なるサーバーにデプロイされます。実際にはサーバー用です。
しかし、うまくいきません。
celeryd は常に 20 ~ 30 回の http リクエストでハングアップします。
そして、ctrl+c を押して celeryd を再起動すると動作します。しかし..それもすぐにハングします。
Eventlet と gevent も使用されています..しかし.. eventlet がうまく機能していません..gevent の方が優れています..
postgres やモデルの使い方が問題だと思います。しかし..正確な理由はわかりません..
誰か助けてください!!!
以下のdjangoモデルの正しい使い方ですか?
sync_service_log = SyncServiceLog.objects.get(pk = sync_log["サービス"])
sync_service_log.save()
.
.
{{一部のコード}}
.
.
sync_service_log.save()
python - Websocket 接続を調整するための推奨される方法は何ですか?
モデルの変更を Chrome クライアントのバックボーン コレクションにストリーミングしている Web アプリがあります。更新の種類と見ているものに応じて、ページの一部をレンダリングする場合とレンダリングしない場合があるいくつかのバックボーン ビューがあります。たとえば、モデルに変更を加えると、コレクションのビューが再レンダリングされ、更新中のモデルの詳細パネル ビューが開いている場合と開いていない場合があります。これらのモデルの変更は、サーバー側のワークフローが非常に冗長で迅速なモデルの変更を伴うため、非常に迅速に発生する可能性があります。
問題は次のとおりです。クライアントにメッセージを送信するときに、Web サーバーのプロセスで多数の errno 32 パイプ破損メッセージが表示されますreadyState。
発生していると思われるonmessageのは、次のメッセージが着信するまでに、コールバックでさまざまなビューのレンダリングが完了していないことです。標準出力でこれらのトレースバックを取得した後も、websocket 接続は引き続き機能し、UI は引き続き更新されます。
モデルの変更をメッセージ キューから読み取って websocketにeventlet.sleep(0.02)送信するループを挿入すると、壊れたパイプ メッセージは消えますが、これは実際の解決策ではなく、厄介なハックのように感じます。
websocket のonmessage機能があまりにも多くの仕事をしようとしていて、次のメッセージが入ったときにまだ忙しいという同様の問題を抱えている人はいますか? 誰にも解決策がありますか?
performance - eventlet と gevent のパフォーマンスの大きな違いは何ですか?
結果として、これら 2 つのライブラリは同様の哲学と同様の設計上の決定を共有しています。しかし、この人気のある WSGI ベンチマークによるeventletと、gevent. 彼らのパフォーマンスが大きく異なる理由は何ですか?
私が知っているように、それらの主な違いは次のとおりです。
geventは、独立したリアクター インターフェイスを定義しlibev、その背後にある、、および Twisted リアクターを使用して特定のアダプターを実装します。リアクター インターフェースを追加すると、重大なパフォーマンス ヒットが発生しますか?libeventeventletselectepollgeventほとんどが Cython で書かれていeventletますが、純粋な Python で書かれています。ネイティブにコンパイルされた Cython は、計算量はそれほど多くないが IO バウンドのプログラムの場合、純粋な Python よりも高速ですか?のプリミティブは
gevent標準ライブラリのインターフェイスをエミュレートeventletしますが、 のプリミティブは標準とは異なり、それをエミュレートする追加のレイヤーを提供します。エミュレーション層を追加するeventletと遅くなりますか?の実装は
eventlet.wsgiよりも悪いですgevent.pywsgiか?
全体的にとても似ているので、本当に不思議です。
python - Python でのマルチスレッド プログラミングの利点は何ですか?
マルチスレッド プログラミングについて聞くと、自分のプログラムを高速化する機会について考えますが、そうではありませんか?
と結果:
そして私の質問は、このコードをラップトップではなくサーバーで実行し、より多くのワーカーの値を設定すると、CPython のバージョンよりも速く実行されるのでしょうか? スレッドの利点は何ですか?
追加: そして、元のcpythonのスレッドを使用してアプリを書き直しました
結果は
そして、これは非常に良い結果だと思います。標準の nmap スキャン時間として次のように考えています。
そして私の質問は今です:これはスレッドではなくEventletにとって特別なものであり、なぜタスクを高速化しないのかを理解できるように、Eventletにどのように実装されているのですか?
Eventlet は、OpenStack などの主要なプロジェクトの多くで使用されています。しかし、なぜでしょうか? 非同期でDBに大量のクエリを実行するだけですか?
python - gevent pool.wait_available()メソッドの意味
ほら、人々。gevent.poolクラスとpool.wait_available()メソッドについて質問があります。どちらもコードスニペットです。
1.1。
2.2。
同様の結果が得られます:
誰かがwait_available()メソッドの意味を説明できますか?そしてそれの使用法の可能なケース。
======= update ========私はすでにそれをサルパスしました、それは正しく動作します、私が知りたいのはこれらの2つのコードスニペットの違いです。
python - eventlet.GreenPool.spawnを使用しているときに、メインスレッドで例外を発生させるにはどうすればよいですか?
eventlet.GreenPool.spawnを使用していくつかのタスクを実行し、すべてのgreanthreadsが終了するのを待ちます。例外が発生することはわかっています-その例外をキャッチしてメインスレッドにスローするにはどうすればよいですか?簡単だと思いますが、何かが足りません。
これが例です(失敗し、成功したいです)
そしてそれは出力です:
python - `eventlet.spawn`が期待どおりに機能しない
データ分析タスク用のWebUIを作成しています。
これが機能することになっている方法です:
datasetユーザーがandなどのパラメーターを指定した後learning rate、新しいを作成すると、task recordこのタスクのエグゼキューターが非同期で開始され(エグゼキューターの実行に時間がかかる場合があります)、ユーザーは別のページにリダイレクトされます。
を検索した後async library for python、私はから始めました。これがビュー関数eventletで書いたものです。flask
上記のコードでは、エグゼキュータはまったく実行されませんでした。
私のコードの問題は何でしょうか?それとも私は何か他のものを試すべきですか?
python - DBドライバー用のGevent/Eventletモンキーパッチ
Gevent / Eventletモンキーパッチを実行した後-DBドライバー(例:redis-py、pymongo)が標準ライブラリ(例socket)を介してIOを使用する場合は常に非同期になると想定できますか?
したがって、イベントレットのモンキーパッチを使用するだけで、たとえば次のようになります。イベントレットアプリケーションでredis-pyノンブロッキング?
私が知っていることから、接続の使用法に注意すれば十分なはずです(たとえば、グリーンレットごとに異なる接続を使用するなど)。しかし、私は確信したい。
他に何が必要か、またはGevent / EventletでDBドライバーを正しく使用する方法を知っている場合は、それも入力してください。