Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http 带有EventMachine服务的任务_Http_Get_Eventmachine - Fatal编程技术网

Http 带有EventMachine服务的任务

Http 带有EventMachine服务的任务,http,get,eventmachine,Http,Get,Eventmachine,我需要解决这个任务 我需要开发一个服务,它使用EventMachine提供有保证的httpget请求 服务是否有API/发送?url=http%3A%2F%2Fya.ru,其中url是需要传递的http请求/ 在每个请求中,API都会立即响应200,body OK。在此之后,服务将尝试传递所有请求。如果收到答案200,则该请求被视为已送达。如果请求失败,请稍后重试 服务有function/stats,它显示了一个带有“highcharts”的图表,其中我们看到了三行-接收的请求、成功的请求

我需要解决这个任务

我需要开发一个服务,它使用EventMachine提供有保证的httpget请求

  • 服务是否有API/发送?url=http%3A%2F%2Fya.ru,其中url是需要传递的http请求/
在每个请求中,API都会立即响应200,body OK。在此之后,服务将尝试传递所有请求。如果收到答案200,则该请求被视为已送达。如果请求失败,请稍后重试

  • 服务有function/stats,它显示了一个带有“highcharts”的图表,其中我们看到了三行-接收的请求、成功的请求和失败的请求
这一步是1秒。代码应包含测试rspec/CUMBURE。如果服务不是持久性的,是否可能在重新启动后丢失数据


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

这里有一个小片段让你开始。它使用
emhttprequest
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

您将需要持久队列,并且需要一种管理和监视异常的方法,这可能意味着EventMachine不是适合此作业的工具。尝试一些后台工作服务,请参阅

如果你要进行大量的简单任务和类似反应器的模式,那么Bealnstadd可能是一种方式,请参见: