問題タブ [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.

0 投票する
1 に答える
484 参照

perl - LWP::Protocol::AnyEvent::http で WWW::Mechanize を使用する方法がわかりません

そのため、イベント駆動型プログラミングへの進出に苦労しています。そのほとんどはまだ逐次的に考えているためですが、LWP::Protocol::AnyEvent::httpを使用しているときにコードを同期する方法を理解するのに苦労しており、理解の助けを求めています。以下は、私の基本的な理解不足を示す、私が作成できる最小のプログラムです。

foreachループに入る前に ->get が成功したことを確認するにはどうすればよいですか? モジュールの->get使用時にブロックされないため、すぐに戻ります。LWP::Protocol::AnyEvent::httpそのため->links、プログラムは終了するだけです。削除LWP::Protocol::AnyEvent::httpすると、プログラムは通常の順次プログラムのようにリンクを返し、速度も同様に遅くなります。

洞察をありがとう。

0 投票する
1 に答える
401 参照

perl - Perl/Tk + AnyEvent で MainLoop を停止する方法

AnyEvent のタイマーを使用する Perl/Tk プログラムを書いています。タイマーがアクティブな場合、ウィンドウを閉じるのに問題があります。このウィンドウを閉じるハンドラーを作成しました:

ウィンドウを閉じるときにタイマーがアクティブな場合、タイマーは停止し、ウィンドウは閉じますが、MainLoop は停止しません。どうしたの?

0 投票する
1 に答える
332 参照

perl - Windows Perl での AnyEvent のエラー

Windows Perl で AnyEvent の fork_call を使用しようとしています。サンプルコードをいくつか書きました:

しかし、次のエラーが発生しました:

0 投票する
1 に答える
178 参照

perl - Perl - LWP::Protocol サブクラスの選択を強制しますか、それとももっと良い方法がありますか?

背景:

AnyEvent::HTTPに基づいた HTTP(S) 用のLWP::Protocol 「実装者」を作成しました。(つまり、 HTTP と HTTPSの両方を実装しています)。

でブロックしないという点で、 LWP::Protocol::AnyEvent::httpCoro::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を呼び出すとき)。

「実装者」の選択を強制できますか? または、これを行うより自然な方法はありますか?

0 投票する
2 に答える
301 参照

perl - Perl AnyEvent 同時実行の内部

クライアント接続ごとに「AnyEventタイマー」ウォッチャーオブジェクトを作成するサーバーがあります(AnyEventループに追加します)。

したがって、コールバックは $interval 秒ごとに実行されます。多くのクライアントがある場合、いくつかのコールバックを同時に実行する必要があります。AnyEvent はこれをどのように処理しますか? それらのコールバックを次々に実行しますか、またはこの場合、これらのコールバックが同時に実行されるように、何らかの並行性メカニズムがありますか? (たとえば、複数のスレッドを作成することにより、同時に実行する必要がある複数のコールバックの実行を高速化するため)
私のサーバーの場合、コールバックはデータベース ルックアップを実行します。データベース接続のデータベース ハンドルがイベント ループの外で初期化されました。私の懸念は、AnyEvent に同時実行メカニズムがある場合、1 つのコールバックが別のコールバックがデータベース ルックアップを終了してデータベース ハンドルが解放されるまで待機する必要があるため、コールバックを同時に実行できないことです。
PS答えてくれた「池上」に感謝します。

0 投票する
2 に答える
1499 参照

perl - AnyEvent::HTTP の基本的な例が機能しない

AnyEvent::HTTP

Perl 5.10 を搭載した Debian と Centos で試しました

後に音が出ない

モジュールに根本的に壊れているものがありますか、それとも苦情が予想されますが、より新しい perl バージョンが必要ですか?

編集

だから私はイベントループが必要AE::HTTPです.使用法を示す簡単な例はありますか?

0 投票する
1 に答える
654 参照

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 は空いています。