Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.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
Ruby on rails 请求超时重做_Ruby On Rails_Ruby_Heroku_Puma - Fatal编程技术网

Ruby on rails 请求超时重做

Ruby on rails 请求超时重做,ruby-on-rails,ruby,heroku,puma,Ruby On Rails,Ruby,Heroku,Puma,我有一个bug,在30秒超时后,服务器似乎再次收到请求 流程: 用户向发送到服务器的文本字段输入多个或多个图像URL sources = "mysite.com/1.jpg mysite.com/2.jpg mysite.com/1.jpg" 服务器按空格分隔,并为每个url创建一个新映像 sources.split(" ").map do |url| Photo.create(source: url) end 照片是一个模型,带有称为img的回形针附件和一个源列 存在self.img\

我有一个bug,在30秒超时后,服务器似乎再次收到请求

流程:

用户向发送到服务器的文本字段输入多个或多个图像URL

sources = "mysite.com/1.jpg mysite.com/2.jpg mysite.com/1.jpg"
服务器按空格分隔,并为每个url创建一个新映像

sources.split(" ").map do |url|
  Photo.create(source: url)
end
照片是一个模型,带有称为img的回形针附件和一个源列 存在self.img\u remote\u url=self.source的after\u操作,以将源作为源添加到附件中

请注意,我这里没有使用后台处理

问题是从今天开始的,但几天前还可以解决。 由于处理时间超过30秒,当图像数量导致请求超时时,会发生此错误。通常,它只会继续在服务器上处理图像。现在,当超时发生时,从日志中可以看出,请求似乎再次被接收,从而再次处理所有文件

此时,使用puma,第二个线程开始工作,但再次达到超时。。这将一直持续到所有线程、进程和动态节点都已满并且无法再接收请求为止。然后处理完成了,创建了多张照片,这让我非常不安

我不清楚为什么会将请求重新发送给服务器。这不是客户端问题,因为复制不会立即发生,根据日志,发生超时错误时是正确的H12

我正在使用puma 2.9.1、ruby 2.1.3、rails 4.1.6、heroku cedar和最新的回形针

超时时是否有任何原因导致请求重做? 我如何调试这个?
这可能是heroku路由机制中尚未发现的错误吗?

如何排除客户端执行重新请求的可能性?我无法立即理解其中的道理。您可以尝试查看浏览器开发网络图(通常是F12),或者使用curl/wget。首先,我在控制器操作的开头记录了一句话,它只出现一次。第二,第二个请求正好发生在超时发生时,而不是之前。如果我添加的照片较少,并且没有超时,则不会发生此问题。而且,我没有看到来自浏览器的另一个请求。请求可能没有收到两次,但它的数据是。同样的帖子绕过controllerOkay返回服务器,很抱歉不能帮助您。你可以试着换一个不同的处理程序,webrick来解决这个问题。@NickGinanto你找到解决办法了吗?我在express应用程序中也面临类似的问题