問題タブ [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 - AnyEvent::Socket に基づくコードの動作が不安定
AnyEvent を使用して memcached クライアントを作成し (調査用)、次のコードを実装しました。
しかし、何らかの理由でこのコードは不安定です。出力:
「get」コマンドが 1 つ、次に 2 つ機能する理由がわかりません。モジュール AnyEvent::Memcached を使用すると、すべて問題ありません。
出力:
何が問題なのか理解できませんか?
multithreading - ミューテックスのように、threads::shared モジュールからロックを使用できますか?
AnyEvent を使用して、X 分ごとにイベントをトリガーしています。一部のプロセスは長く、データベースに記録する結果は、記録するのに長い場合があります (3 秒以上の場合もあります)。データベースに同時にアクセスする関数が 1 つだけであることを確認したいと思います。そこで、threads::shared モジュールの lock を使用します。これが私のコードです:
main.pl:
対象ユーザー:
しかし、私はこのエラーを受け取ります:「ロックは共有値でのみ使用できます」
アイデアはありますか?ありがとう
perl - EV での合成ファイルハンドルの使用 (perl)
このように作成されたファイルハンドルオブジェクトがあります(わかりやすくするために少し編集されています):
と一緒に使いたいですAnyEvent
。では問題なく動作しAnyEvent::Impl::Perl
ますが、 では失敗し
AnyEvent::Impl::EV
ます。からこのメソッドまで追跡したと思いますEV
:
審査落ちだと思いますSvTYPE (fh) == SVt_PVGV
。Devel::Peek
の Dump() メソッドを使用すると、次のようになります。
このテストに合格できるようにハンドルの作成を調整する方法についての支援をいただければ幸いです。
perl - AnyEvent の下の複数の telnet クライアント/コマンド
同じ telnet 接続を介して複数のコマンドを読み取っている場合$_->{thand}->cmd($cmd)
、切断されています。
これは、 への複数回の呼び出しとして現れますae_connect()
。でデータを適切に送信および取得する方法はAnyEvent
?
perl - perl plack アプリで非ブロッキング応答を実装するにはどうすればよいですか?
私はTwiggy::Server
(plackアプリを意味する)を使用して、perlベースのWebサーバーを作成しようとしています。データを生成し、それをクライアント Web ページに返すための JSON 文字列に変換する、おそらく時間のかかるサブルーチンを実行して、一部のデータに対する要求 (Web ページでの ajax 呼び出しからの要求) に応答したいと考えています。
ここで、私のサーバーの簡易テスト バージョンを確認できます: http://pastebin.com/iNaDTVwL
この例は、現在の実装で直面している問題を示しています。AnyEvent::ForkManager
物事の非ブロッキング部分を行うために使用すると、「大きな」json 応答が切り捨てられます。
このドキュメントは私の質問に完全に答えます (そして、私がやろうとしていることをよりよく説明しています): https://github.com/jjn1056/Example-PlackStreamingAndNonblocking ... 終了した場合。AnyEvent::ForkManager
少しハックのように見えるものを使用する代わりに、ノンブロッキングを行う「適切な」方法が欠けているだけです。
perl - 特定の要件が満たされている場合、AnyEvent::Log メッセージをコールバックに転送する
メイン プログラムで AnyEvent Log を使用し、いくつかの依存モジュール/パッケージを使用するプロジェクトに取り組んでいます。現在、各モジュールが独自のコンテキストに書き込みを行っており、すべてのコンテキストがメイン プログラムのコンテキストにスレーブとして追加されています。このプロジェクトは、はるかに大きなプロジェクトの一部であり、ローカル ログ ファイルを書き出すことに加えて、特定のメッセージをリモート プログラムに送信して、ユーザーにメッセージを表示する責任があります。
問題は、リモート プログラムに送信するために、メイン プログラムからのみ入手できる情報が必要なため、メッセージを送信するためにパッケージ レベルでメソッドを実装するだけでは費用がかからないことです。必要な情報は多かれ少なかれトランザクション ID であり、ログ メッセージは特定のトランザクションからの興味深いイベントです。
メイン プログラムには 2 つのコンテキスト ( main 、 secondary ) があります。私が興味を持っているメッセージは、セカンダリ ctx またはパッケージ/モジュール コンテキストのいずれかから送信されます。情報のみを送信することに関心があります-重要レベルのメッセージをユーザーに送信しますが、txID がメインプログラムに存在する場合のみです。展開が実行されているかどうかに関係なく、常にメッセージがローカル ログ ファイルに書き込まれるようにしたいと考えています。モジュールは特定のことを行うように割り当てられており、手元のタスクに関連付けられた ID があるという事実さえ認識してはならないため、これをモジュールではなくメイン プログラムでセットアップするものにしたいと思います。
以下は、メイン プログラムのログ構成固有のコードの簡単な内訳です。
理想的には、log_cb と fmt_cb のいずれかまたは両方を使用して、log_event サブルーチンを使用してリモート プログラムへのメッセージのフォーマットと送信を処理できます。私はいくつかの異なることを試しましたが、今のところ行き詰まっています。
ドキュメントにあるものよりも多くの例を探していますが、まだあまり見つかりません。AE::log はそのままでもかなり素晴らしいので、それほど驚くことではありませんが、何かお役に立てれば幸いです。