0

このタスクを解決する必要があります。

EventMachine を使用して HTTP GET リクエストを保証付きで配信するサービスを開発する必要があります。

  • サービスには API /send がありますか? url=http%3A%2F%2Fya.ru、ここで url は配信する必要がある http リクエストです/

すべてのリクエストで、API はボディ OK ですぐに 200 を返します。この後、サービスはすべてのリクエストを配信しようとします。応答 200 を受信した場合、要求は配信されたと見なされます。リクエストが失敗した場合は、後でやり直してください。

  • サービスには関数 /stats があり、「ハイチャート」を含む図に、受信した要求、成功した要求、失敗した要求の 3 つの線が表示されます。

ステップは 1 秒です。コードはテスト rspec/cucumber でカバーする必要があります。サービスが永続的でない場合、再起動後にデータが失われる可能性はありますか?

どんな助けでも大歓迎です。どこから始めればよいかわかりません。しかし、私は RoR を使用してアプリケーションを構築した経験があります。誰かがすでに解決されている本当に似たようなタスクを私に与えることができれば幸いです。

4

2 に答える 2

0

開始するためのスニペットを次に示します。gem を使用しem-http-requestて GET リクエストを実行し、少し遅れて 404 ステータス コードが返された場合は再試行します。このコードをベースとして使用して、要求したものを構築できるはずです。

require "eventmachine"
require "em-http"

def do_get_request(url)

  request = EM::HttpRequest.new(url).get

  request.callback do

    status = request.response_header.status

    if status == 404
      puts "Request #{url} failed with status #{status}, retrying"
      EM.add_timer(1) do
        do_get_request(url)
      end
    else
      # Process request.response
    end

  end
end

EM.run do
  do_get_request(ARGV[0])
end
于 2013-02-09T21:04:34.037 に答える
0

永続的なキューが必要であり、例外を管理および監視する方法が必要になります。これは、おそらく EventMachine がジョブに適したツールではないことを意味します。バックグラウンド ジョブ サービスを試してください。https://www.ruby-toolbox.com/categories/Background_Jobsを参照してください。

大量の単純なタスクとリアクターのようなパターンを使用する場合は、おそらく bealnstalkd が最適です。以下を参照してください。

http://kr.github.io/beanstalkd/ http://railscasts.com/episodes/243-beanstalkd-and-stalker

于 2013-11-13T10:17:19.727 に答える