Rails-打开文件URL且无法结束或杀死它时,Ruby进程处于睡眠状态

时间:2018-12-02 20:49:28

标签: ruby-on-rails ruby

我正在尝试从Activestorage打开图像URL,但是ruby睡着了,控制台日志中的最后一项是:

Started GET "/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBCdz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--bfec3dc0d0745e49d7daa9faac7abdeaa46418c3/f2392748480.png" for 127.0.0.1 at 2018-12-02 14:45:01 -0600

,结束时错误为:Net::ReadTimeout

这不是第一次发生,但之后每次我运行该方法时都会发生。

我的方法:

def upload_photos
  require 'open-uri'
  page_api = Koala::Facebook::API.new(params[:access_token])

  image_urls = params[:images].map do |image|
    open("#{request.protocol}#{request.host_with_port}#{image[:url]}") do |f|
      page_api.put_picture(f, f.content_type, { "caption" => image[:filename] }, params[:id])
    end
  end

  render json: { image_urls: image_urls, album_id: params }
end

它是第一次工作,但此后不会工作。

更新:此方法适用于外部URL,但不适用于活动存储

这是因为Ruby正在忙于打开文件,并且当尝试到达URL时由于正在打开文件而无法响应该请愿,就像试图在镜子中观察自己的后脑勺一样。

0 个答案:

没有答案