通过delay_job将图像上传到heroku

萨钦·普拉萨德(Sachin Prasad)

我正在尝试使用延迟的作业将图像从Heroku上传到s3存储桶。

但是似乎heroku延迟的工作无法获得tmp图像路径。请让我知道我做错了什么或更好的方法。

这是我的控制器代码:

  if @post.save
    unless @post.post_type == 0
      image_a = image_b = ''
      if item_image_params['0'][:item_type] == "A"
        image_a = item_image_params['0'][:image]
        image_b = item_image_params['1'][:image]
      else
        image_a = item_image_params['1'][:image]
        image_b = item_image_params['0'][:image]
      end
      @post.delay.save_image(image_a.path, image_b.path)
    end
  end

我的模型代码:

  def save_image(image_a, image_b)
    items.each do |item|
      if item.item_type == "A"
        item.build_item_image.image = File.open(image_a)
      else
        item.build_item_image.image = File.open(image_b)
      end
    end
    if self.save
      File.delete(image_a) if File.exist?(image_a)
      File.delete(image_b) if File.exist?(image_b)
    end
  end

我延迟收到此错误:

:save_image args: - /tmp/RackMultipart20150715-3-1qoy83r.jpeg - /tmp/RackMultipart20150715-3-if712h.jpeg 
 last_error:
  "No such file or directory - /tmp/RackMultipart20150715-3-if712h.jpeg\n/app/app/models/post.rb:35:in

在第35行,代码为:

 item.build_item_image.image = File.open(image_b)
伊哈兹特编码

Heroku dynos无法访问彼此的本地文件系统。如果我理解正确,则您有一个Web dyno写入其本地文件系统(/ tmp),然后尝试从其他(工作者)dyno读取它。

您最好将上传直接转到S3。我已经成功使用了carrierwave_direct,也可以使用其他东西或自己动手做。

直接上传到S3的好处还在于,在上传过程中不打结您的Web dynos,并绕过它们的超时。如果上载直接发送到heroku并且花费的时间比Web dyno的超时时间长(因为文件很大或用户的连接速度很慢),则上载将完全失败。

我看到您已经用标记了这个问题paperclip您可能会发现Heroku的这篇文章很有用,尽管它似乎没有使用直接上传到s3的首选方法。这篇博客文章提供了一些示例代码,可使用回形针直接上传到s3。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

启动heroku delay_job工人

来自分类Dev

Heroku delay_job依赖项

来自分类Dev

通过回形针通过Heroku将图像上传到S3

来自分类Dev

如何通过应用引擎将图像上传到云存储?

来自分类Dev

通过javascript将图像上传到服务器

来自分类Dev

通过翻新将图像顺序上传到REST API

来自分类Dev

通过Django Admin将图像上传到ImageField时出错

来自分类Dev

iOS通过ASP将图像上传到服务器

来自分类Dev

通过翻新将图像顺序上传到REST API

来自分类Dev

delay_job丢失方法

来自分类Dev

Rspec测试delay_job

来自分类Dev

冲突delay_job / sidekiq

来自分类Dev

将图像上传到Firebase

来自分类Dev

通过上传表单将图像上传到 Django 用户配置文件

来自分类Dev

从S3存储桶将舒适的墨西哥沙发CMS图像上传到Heroku

来自分类Dev

使用Multer将图像上传到mongoDB时在Heroku上出错

来自分类Dev

Rails 4-如何通过delay_job发送类似新闻通讯的电子邮件?

来自分类Dev

delay_job进程默默退出

来自分类Dev

Rakefile用于Sinatra的delay_job

来自分类Dev

将Blob文件/图像上传到Mysql

来自分类Dev

将图像从Android上传到GCS

来自分类Dev

将图像从JQuery上传到Node JS

来自分类Dev

使用PHP将图像上传到MySQL

来自分类Dev

CakePHP:直接将图像上传到MySQL

来自分类Dev

使用Angular将图像上传到Kinvey

来自分类Dev

将图像上传到Skype BOT

来自分类Dev

无法将图像上传到Django Admin

来自分类Dev

如何将图像上传到Firebase

来自分类Dev

将图像从React上传到Laravel API