【问题标题】:how to correctly use background job for file upload rails app heroku如何正确使用后台作业进行文件上传 rails app heroku
【发布时间】:2012-10-14 20:08:56
【问题描述】:

我正在开发一个 Rails 应用程序,该应用程序从用户那里获取上传的文件并将它们推送到盒子。问题是某些请求会超时,因为 api 调用花费的时间太长。我想将此进程移动到工作进程,但不确定如何在用户上传文件和工作人员将作业从队列中取出之间保留文件。我看到的所有示例似乎都跳过了这部分,或者不处理使用不是 s3 的 api。我考虑将文件存储在数据库中,但 box api 需要一个文件对象(curl -F @file)而不仅仅是文件的内容。关于如何完成的任何指示?出于性能原因,我希望使用sidekiq,但delayed_job 也可以

【问题讨论】:

    标签: ruby-on-rails-3 heroku delayed-job background-process sidekiq


    【解决方案1】:

    几个月来,我们的一个项目遇到了类似的问题。 查看以下链接以供参考

    http://mattgrande.wordpress.com/2009/08/11/delayedjob/

    Paperclip, Delayed Job, S3, Heroku - design for delayed processing of sensitive uploaded files: db or s3?

    还有一个用于延迟工作的回形针的宝石

    https://github.com/jrgifford/delayed_paperclip/

    【讨论】:

    • 有什么方法可以做到这一点而不先去 s3?似乎将文件数据存储在heroku系统中以供工作人员使用的唯一方法是数据库。如果我以前使用数据库进行临时文件存储,首选方式是文本列并存储文件数据库 base64 编码然后解码,将其保存为临时文件然后上传到盒子?
    • 不确定它是否会起作用,因为 Heroku 不允许你写。
    • 查看以下链接,它可能对您有所帮助stackoverflow.com/questions/4356582/…
    • 我是第一个链接的作者。首先感谢您的提及,希望对您有所帮助!话虽这么说,那是在 2009 年写的,所以可能不是 100% 最新的。不过,它应该能让你继续前进。
    【解决方案2】:

    如果您不想依赖 S3 来存储您的临时文件,您应该看看 paperclip_database gem。

    我们使用它在我们的数据库中存储临时文件,以供延迟作业处理。

    只需将带有附加临时文件的类传递给您延迟的作业,您就可以设置好了。就像回形针本身一样,一旦您的作业从数据库中删除,文件就会被删除。

    【讨论】:

      猜你喜欢
      • 2014-09-23
      • 1970-01-01
      • 1970-01-01
      • 2011-02-13
      • 1970-01-01
      • 2016-08-05
      • 2023-03-26
      • 2013-01-10
      • 1970-01-01
      相关资源
      最近更新 更多