2013-01-13 36 views
0

我需要解决此任务。EventMachine服务的任务

我需要开发一个服务,它提供HTTP GET请求并使用EventMachine进行保证。

  • 服务有API /发送? url = http%3A%2F%2Fya.ru,其中url是需要传递的http请求/

对于每个请求,API一次响应200正文OK。在此之后,该服务会尝试传送所有请求。如果收到答案200,则该请求被视为已传送。如果请求失败,请稍后再试。

  • 服务具有函数/统计信息,其中显示了一个包含'highcharts'的图表,其中显示了三行 - 接收到的请求,成功的请求和失败的请求。

该步骤是1秒。该代码应该覆盖测试rspec /黄瓜。如果服务不是持久的,它会在重启后丢失数据吗?

任何帮助将不胜感激。我不知道从哪里开始。但我有使用RoR构建应用程序的一些经验。如果有人能给我真正类似的任务已经解决了,我会很高兴。

回答

0

下面是一个片段,让你开始。它使用em-http-request gem来执行一个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