問題タブ [greenlets]
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 - gevent がこの結合されていない greenlet を実行するのはなぜですか?
コード:
出力:
期待:
私は最初の greenlet に参加したことがないので、実行されることはないと予想しています。または、長い sleep() を指定すると、2 番目の greenlet の後に完了する必要があります。
環境:
私は決して参加したことがなく、結果を待つためにブロックしたくないキャッシュを作成する「使い捨て」グリーンレットを発射できるようにしたいと考えています。
python - gunicorn + geventモンキーパッチはthreadlocalsをgreenlet-localsに自動的にパッチしますか?
guniverseをgeventモードで実行する場合、ここで説明するモンキーパッチ(特にthreadlocals用のパッチ)は、threadlocalsをgreenlet-localsにし、すでに自動的に適用されていますか?
(私はdjangoを実行しており、現在、大きなクエリ結果を少し高速にキャッシュするためにthreadlocalsを使用しています。gevent/ greenletが従来のスレッドの代替モデルを使用していることを理解しているため、懸念があります)。
python - グリーンレット対 スレッド
私はgeventsとgreenletsに不慣れです。私はそれらをどのように扱うかについていくつかの良い文書を見つけましたが、私がグリーンレットをいつどのように使うべきかについての正当化を私に与えてくれませんでした!
- 彼らは本当に何が得意ですか?
- プロキシサーバーで使用するのは良い考えですか?
- なぜスレッドしないのですか?
私がよくわからないのは、基本的にコルーチンである場合に、どのように並行性を提供できるかということです。
python - greenlet で発生した例外をキャッチする
グリーンレット内で発生した例外をキャッチしようとしています。このチュートリアルによると、残念ながら「Greenlet で発生した例外は、Greenlet 内に留まります」。以下のコードには、クロール グリーンレットを生成する sync メソッドがあります。これらのクロール グリーンレットは HTTPError 例外を発生させます。これを sync メソッドの本体でキャッチする必要があります。例外に基づいて、sync メソッドで Account オブジェクトの適切なステータスを設定します。それを達成するために、同期メソッドのグリーンレットで発生した例外をどのようにキャッチできますか? 前もって感謝します!
python - greenlet をデコレータとして使う
greenlet.greenlet
次のように、通常の関数を greenlet に変換して、デコレータとして使用するのは理にかなっていますか?
もちろん、関数をグリーンレットとしてのみ使用する予定であると想定していf
ますg
。
このアプローチに隠れた落とし穴やその他の欠点はありますか?
python - MongoDB の接続プールは pymongo ドライバーでどのように機能しますか?
geventベースのフレームワークでpymongoドライバーでmongodbを使用しています。作業プール接続がわかりません。リクエストごとに新しい接続インスタンスを作成しています:
のプールから取得した実際の接続は?
さて、私がそのように接続すると:
これは同じプールから取得された接続ですか? MongoClient を異なる引数で呼び出すとどうなりますか?
python - すでに実行中の Python スクリプトからメソッドを呼び出す
私はPythonが初めてで、かなり長い間これに苦労しています。さて、サーバーにログインし、サーバーのステータスが変化したかどうかを確認するために10秒ごとにサーバーに常にpingを送信するプログラムがあります。同じスクリプトに、サーバーにメッセージを送信する関数があります。
send メソッドの簡単な例:
このメソッドの実行中に別のスクリプトからこのメソッドを呼び出すことはできますか? 同じセッションを使用する場合と同様です。この関数を呼び出すスクリプトを実行すると、そのスクリプトの現在のインスタンスを使用する代わりに新しいインスタンスが作成され、サーバーに接続されていないという例外がスローされるようです。
ノブの質問で申し訳ありません。しばらくグーグルを試してみましたが、答えが見つからないようです。私は以下を読みましたが、これらは問題を解決しませんでした:
こんにちは@nFreeze返信ありがとうございます私はZeroRPCを使用しようとしましたが、あなたが与えたスクリプト/例を実行するたびに(明らかに編集されています)、このエラーに遭遇します:
geventをインストールしましたが。これを修正する方法がわかりません。かなりの時間グーグルで検索しています。
python - greenlet の正しい終了
gevent を使用していくつかの HTML ページをダウンロードしています。遅すぎるウェブサイトもあれば、一定期間後にリクエストの処理を停止するウェブサイトもあります。そのため、一連のリクエストの合計時間を制限する必要がありました。そのために、gevent "Timeout" を使用します。
しかし、問題は、例外が発生したときにすべての状態を失うことです。
サイト 'www.test.com' をクロールするとします。サイト管理者がメンテナンスのために Web サーバーを切り替えることを決定する直前に、10 個の URL をダウンロードすることができました。このような場合、例外が発生すると、クロールされたページに関する情報が失われます。
問題は、タイムアウトが発生した場合でも状態を保存してデータを処理するにはどうすればよいかということです。