問題タブ [eventmachine]

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 投票する
3 に答える
485 参照

ruby - eventmachine を使用してハッシュを送信する

EventMachine クライアントからサーバーに、データが取り込まれたハッシュを送信したいと考えています。問題は、サーバーの receive_date メソッドが単に文字列を出力することです。

サーバー:

クライアント:

この行: puts data[:total]

nil のみを表示

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

ruby - RubyでノンブロッキングIO?

ノンブロッキング IO についていくつか質問があります。

  1. Nginx で EventMachine を使用せずに Ruby を使用する場合、ノンブロッキング IO を利用できますか?

  2. Ruby を EventMachine で使用し、Apache で使用する場合、ノンブロッキング IO を利用できますか?

  3. 上記の答えが「いいえ」の場合、Ruby を Nginx 上の EventMachine で使用して、ノンブロッキング IO を活用する必要がありますか?

0 投票する
3 に答える
2909 参照

ruby-on-rails - Ruby on Rails + EventMachine?

EventMachineの真の力を活用するには、アプリケーション全体でノンブロッキングコードを使用する必要があると聞きました。

これは、EventMachineでRuby on Railsを実行できないことを意味しますか?

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

ruby - Ruby eventmachine エラー: 'no loop breaker'

eventmachine (0.12.10、OSX 10.6.4) からわずかに heisen エラーが発生します。

テストでのみ発生し、すべてのテストが一緒に実行された場合にのみ発生します。彼らが通過する個別に実行します。

エラーのメッセージに言及している eventmachine コードの唯一の場所を見つけました。

http://github.com/eventmachine/eventmachine/blob/master/ext/em.cpp#L333

(私が困惑しているのは、それが win32 コード パスのように見えることです。それとも間違っているのでしょうか?)

私には、ソケットのようなリソースが使い果たされているように見えます。それは発生パターンを説明するでしょう。

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

ruby - ThinとSinatraを使用して、リクエストの応答を非同期的に繰り返します

Sinatraでの応答が「eachable」オブジェクトを返す場合、Sinatraのイベントループは結果を「each」し、HTTP応答としてストリーミング方式で結果を生成します。ただし、Sinatraへの同時リクエストがある場合は、別のリクエストを処理する前に、1つのレスポンスのすべての要素を反復処理します。DBクエリの結果にカーソルがある場合は、同時クエリを処理する前に、すべてのデータが使用可能になるのを待つ必要があることを意味します。

私はasync-sinatragemとhttp://macournoyer.com/blog/2009/06/04/pusher-and-async-with-thin/を見て、これらが私の問題を解決すると思っていましたが、試しましたこの例から:

リクエストは期待どおりに同時に機能し/delay/5ません。つまり、3つのリクエストを同時に行うと、Chromeのデバッガーは応答時間を約5、10、15秒と記録します。

セットアップが不足していますか、それともSinatra / Thinにリクエストを同時に処理するように指示する別の方法がありますか?

更新:これには別のレンチがあります(またはおそらく問題を解決します):同時に実行すると正しい動作が行われます(それぞれ2つのリクエストが最大5秒で返されます)。(Apacheベンチマークユーティリティ)を実行すると、合計時間(〜25秒)に対して妥当な値も返されます。FirefoxはChromeと同じ動作を示します。ブラウザはコマンドラインユーティリティと何が違うのですか?curl -i http://localhost:3000/delay/5ab -c 10 -n 50 http://locahost:3000/delay/5

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

ruby - EventMachine に関する 1 つの質問

私の質問は、EchoServer モジュールで some_value を取得する方法ですか? クラス Test とモジュール EchoServer の関係は何ですか?

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

ruby - Eventmachine::defer + ルビ

私はかなり長い間 EventMachine を使用してきましたが、It Manage が何も心配する必要がないことをより多く示してくれるので、本当に素晴らしいと思いました。しかし、最近、理解できないこの奇妙な問題を見つけました。

ここで言っていることは

私はこのように見えるEventmachineループを持っています

ここで私の操作ブロックは次のようになります(ニンジンgemを使用したamqpの使用の下のコード)

ここで私のコールバックブロックは次のようになります

ここで問題が発生しますコードですが、何か悪いことが起こるまでは正常に動作します

ここで、この上記のコードを実行するとします

キューセット名「my_queue」があります。存在しない場合は作成されます。キューは最初は空です

ここで、コンソールに表示される出力

キューの開始

キューがメッセージをポップしています

BOO 処理するものがありません

私がメッセージを作成すると、それに応じてコンソールの変更が出力されます

今トラブル

AMQPサーバーを一時的にシャットダウンした場合 ここで出力(意味を示すため)

キューの開始

壊れたパイプ => 操作ブロックのレスキュー開始ブロックでキャッチされたエラー

今すぐ AMQP サーバーを起動します

コードは、現在エラーが発生している行から先に進んでいるようには見えません。つまり、行を印刷しないようです

キューはメッセージをポップしています

再試行が発生した現在の延期だけでなく、タイマー時間が経過した後に開始される新しい延期操作ブロックも同様です。

先に進む (スタック) ことは決してないようで、キューからメッセージをフェッチすることを意味する処理を実行し、それに応じて処理を実行し、他のすべてのものを実行します (AMQP サーバーが現在実行されているため)。

ありがとう

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

ruby - Ruby の同時実行/非同期処理 (単純なユース ケースを使用)

ruby の並列/非同期処理機能を調べていて、多くの記事やブログ投稿を読みました。EventMachine、Fibers、Revactor、Reia などを調べました。残念ながら、この非常に単純なユース ケースに対する単純で効果的な (そして非 IO ブロッキング) ソリューションを見つけることができませんでした。

ご覧のとおり、私の小さなスクリプトは、読み取り( R )、プロセス( P )、および書き込み( W ) の 3 つの操作を実行しています。簡単にするために、各操作に正確に 1 単位の時間 (たとえば 10 ミリ秒) かかるとすると、現在のコードは次のようになります (5 行)。

しかし、私はそれを次のようにしたいと思います:

明らかに、3 つのプロセス (リーダー、プロセッサー、ライター) を実行し、読み取り行をリーダーからプロセッサ キューに渡し、処理された行をライター キューに渡すことができます (すべて、RabbitMQ などを介して調整されます)。しかし、ユースケースは非常に単純で、適切ではありません。

(Ruby から Erlang、Closure、または Scala に切り替えることなく)これを行う方法についての手がかりはありますか?

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

ruby - Ruby EventMachine で動作するように SSL クライアント証明書を使用して HTTPS リクエストを取得するにはどうすればよいですか?

Ruby EventMachine を使用して SSL 証明書認証を使用する HTTPS Web サービスにアクセスしようとしていますが、うまくいきません。

エンドツーエンドでテストするために、次の簡単なコード ブロックを作成しました。

上記の出力を実行すると、<SSL_incomp>RuntimeError メッセージが発生します。:verify_peertrue と false の両方に設定して実行しようとしましたが、同じエラーが発生します。オプションEventMachine::HttpRequest#getなしで実行しても同じです。:ssl

また、オプションなしで (証明書なしの単純な HTTPS) リクエストを GMail ( https://mail.google.com )に送信しようとしました:sslが、これは機能し、ステータス コード 200、ヘッダー、および本文が出力されます。

curl を使用して Web サービスに同じリクエストを実行しようとしましたが、うまくいきました。

em-http-request gem または EventMachine を間違って使用しているか、SSL ファイルが curl では機能するが EventMachine では機能しない形式であると考えています。

上記の例を解決する方法を誰かが知っているか、EventMachine を直接使用して同様の例を提供していただければ幸いです。

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

ruby-on-rails - AJAX と Rails: スタックは 2 つですか、それとも 1 つですか?

ほとんどの Web アプリケーションはかなり標準的な CRUD です。作成時にライブでクライアントにプッシュするデータが必要です。AJAX 用に別のより軽量なスタック (Sinatra や EventMachine など) を実行する価値はありますか?

1 つのスタックを実行すると、Rails のオーバーヘッドが発生します。これにはより多くのRailsプロセス/サーバーが必要になる可能性があります.データベースクエリなしでこれらの間で通信するにはどうすればよいですか? ゼロMQ? 最後に、Rails は何百もの同時接続を処理するのに適していますか?

2 つのスタックを実行する場合、承認ロジックを複製する必要があります。

どの方法が成功しましたか?