問題タブ [anyevent]
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.
perl - LWP::Protocol::AnyEvent::http で WWW::Mechanize を使用する方法がわかりません
そのため、イベント駆動型プログラミングへの進出に苦労しています。そのほとんどはまだ逐次的に考えているためですが、LWP::Protocol::AnyEvent::httpを使用しているときにコードを同期する方法を理解するのに苦労しており、理解の助けを求めています。以下は、私の基本的な理解不足を示す、私が作成できる最小のプログラムです。
foreach
ループに入る前に ->get が成功したことを確認するにはどうすればよいですか? モジュールの->get
使用時にブロックされないため、すぐに戻ります。LWP::Protocol::AnyEvent::http
そのため->links
、プログラムは終了するだけです。削除LWP::Protocol::AnyEvent::http
すると、プログラムは通常の順次プログラムのようにリンクを返し、速度も同様に遅くなります。
洞察をありがとう。
perl - Perl/Tk + AnyEvent で MainLoop を停止する方法
AnyEvent のタイマーを使用する Perl/Tk プログラムを書いています。タイマーがアクティブな場合、ウィンドウを閉じるのに問題があります。このウィンドウを閉じるハンドラーを作成しました:
ウィンドウを閉じるときにタイマーがアクティブな場合、タイマーは停止し、ウィンドウは閉じますが、MainLoop は停止しません。どうしたの?
perl - Windows Perl での AnyEvent のエラー
Windows Perl で AnyEvent の fork_call を使用しようとしています。サンプルコードをいくつか書きました:
しかし、次のエラーが発生しました:
perl - Perl - LWP::Protocol サブクラスの選択を強制しますか、それとももっと良い方法がありますか?
背景:
AnyEvent::HTTPに基づいた HTTP(S) 用のLWP::Protocol 「実装者」を作成しました。(つまり、 HTTP と HTTPSの両方を実装しています)。
でブロックしないという点で、 LWP::Protocol::AnyEvent::httpやCoro::LWPとは異なり$protocol->request
ます。select() や名前解決など、Coro::LWPと同じハックのほとんどを実装しましたが、 AnyEventをより有効に活用しています。
によって返される HTTP 応答は$protocol->request()
今230 - Pending Completion of Request
のところですが、それが完了した要求ではないことを伝えるためのより良い方法を受け入れます。
HTTP::Responseのサブクラスも作成しました。このサブクラスは、標準の「コンシューマー」メソッドで、レスポンスが完了する前にその一部を使用しようとした場合にブロックを強制します。また、内部/提供されたAnyEventとうまく連携するためのメソッドを追加して、一度に多くのリクエストを開始したり、 AnyEvent::CondVar
で他のことを実行したりできるようにします。(また、LWP::UserAgent の事後ロジックをすべてオーバーライドして、実際のリクエストが完了するまで遅延させました)。send_request()
問題:
私は現在、LWP::UserAgentサブクラスが非同期リクエストにscheme
追加することでURL を「アップグレード」し、 LWP::Protocolサブクラスがスキーム一致の「実装者」であるというハックを行っています。'_async'
/^https?_async$/
質問:
LWP::UserAgentサブクラスに、システムにインストールされている他のものではなく、(より非同期の) HTTP および HTTPS プロトコルの「実装者」を選択させるにはどうすればよいですか? (つまり、LWP::UserAgentサブクラスがLWP::Protocol::create
を呼び出すとき)。
「実装者」の選択を強制できますか? または、これを行うより自然な方法はありますか?
perl - Perl AnyEvent 同時実行の内部
クライアント接続ごとに「AnyEventタイマー」ウォッチャーオブジェクトを作成するサーバーがあります(AnyEventループに追加します)。
したがって、コールバックは $interval 秒ごとに実行されます。多くのクライアントがある場合、いくつかのコールバックを同時に実行する必要があります。AnyEvent はこれをどのように処理しますか? それらのコールバックを次々に実行しますか、またはこの場合、これらのコールバックが同時に実行されるように、何らかの並行性メカニズムがありますか? (たとえば、複数のスレッドを作成することにより、同時に実行する必要がある複数のコールバックの実行を高速化するため)
私のサーバーの場合、コールバックはデータベース ルックアップを実行します。データベース接続のデータベース ハンドルがイベント ループの外で初期化されました。私の懸念は、AnyEvent に同時実行メカニズムがある場合、1 つのコールバックが別のコールバックがデータベース ルックアップを終了してデータベース ハンドルが解放されるまで待機する必要があるため、コールバックを同時に実行できないことです。
PS答えてくれた「池上」に感謝します。
perl - AnyEvent::HTTP の基本的な例が機能しない
Perl 5.10 を搭載した Debian と Centos で試しました
後に音が出ない
モジュールに根本的に壊れているものがありますか、それとも苦情が予想されますが、より新しい perl バージョンが必要ですか?
編集:
だから私はイベントループが必要AE::HTTP
です.使用法を示す簡単な例はありますか?
perl - Anyevent::RabbitMQ Perl QoS prefetch_count が機能しない
AnyEvent::RabbitMQ を使用する RabbitMQ perl ライブラリ Net::RabbitFoot を使用しようとしています。RabbitMQ チュートリアルによると、 prefetch_count を 1 に設定すると、別のメッセージで既にビジー状態のワーカーにメッセージをディスパッチしてはならないため、公平なディスパッチが保証されます。ただし、Perl 実装のNet::RabbitFootは、こちらの 54 行で説明されているように qos を設定した後でも、そのようには機能しないようです。仕事。これがqosの実装です。なぜこれが起こっているのかを理解するのを手伝ってもらえますか? ライブラリのバグですか?
前もって感謝します。
編集:
これが私のセットアップです。2 つのコンシューマーが同じ名前のキューに接続されています。多くのメッセージをディスパッチすると、次のパターンが見られます。コンシューマ 1: Msg1、Msg3、Msg5 ... コンシューマ 2: Msg2、Msg4、... すべてのメッセージは同じキューからのものです。Msg3 がコンシューマ 1 を占有している場合、Msg5 はコンシューマ 1 に送信され、コンシューマ 2 は空いています。