【问题标题】:Process Uploaded File on Heroku Worker Dyno在 Heroku Worker Dyno 上处理上传的文件
【发布时间】:2014-01-20 16:03:42
【问题描述】:

在我正在构建的 RoR 应用程序中,管理员可能会上传一个(相对较小的)文件,然后需要对其进行处理(这需要相对较长的时间)。由于此应用程序在 Heroku 上运行,我想在工作人员测功机上进行处理,以免占用网络测功机。我们正在使用delayed_job gem 进行排队。

想知道最好的方法是什么 - 我考虑过的几个通用解决方案:

  • 将文件上传到 S3 并让工作人员从 S3 中获取它。缺点:出于各种原因,我宁愿不添加 S3 依赖项,而且我们不会在处理后保留文件。

  • 将文件读取为字符串,然后当作为参数传递给延迟方法时,delayed_job 将其放入数据库中。然后,处理作业可以将其转换回所需的格式。

第二种解决方案有什么缺点吗?它似乎可以工作,但不确定它是否理想。还有其他推荐的做事方式吗?

【问题讨论】:

    标签: ruby-on-rails heroku delayed-job worker


    【解决方案1】:

    您有两个选择:像 S3 这样的文件存储或数据库。

    在 S3 上存储文件既便宜又可靠。有一个内置协议用于在前端 Web 进程和后端工作人员之间将 URL 传递给文件。我强烈推荐这个。

    您还可以将文件内容存储在 Postgres 或 Redis 等数据库中,您的前端 Web 进程和后端 dyno 都可以访问这些数据库。数据库是通用引擎,通常是更昂贵的存储文件的地方。这也可以,但我不建议这样做。

    【讨论】:

      猜你喜欢
      • 2016-08-24
      • 2014-12-12
      • 1970-01-01
      • 2011-12-18
      • 2021-06-03
      • 2012-03-08
      • 1970-01-01
      • 2018-01-24
      • 2014-09-17
      相关资源
      最近更新 更多