将大文件上传到s3时,Heroku超时

时间:2011-10-21 19:17:50

标签: ruby-on-rails heroku amazon-s3 refinerycms fog

基于RefineryCMS 1.0.8我的应用程序出了问题 部署在heroku上。

Heroku的请求超时为30秒。上传文件时> 4MO通过RefineryCMS管理员,有时需要花费更多 30秒执行请求(主要是因为需要的时间 将文件上传到s3)。

在这种情况下,dyno将被“冻结”并且 大约30分钟没有响应(在此期间结束时的每个请求 由H12错误请求超时)。这种行为正是在this discussion

中的最后一条消息中描述christos的原因

从此other discussionthe heroku documentation :“直接上传到S3是首选的方法,如果你是 处理大于4MB的文件上传。想法是跳过跳跃 到您的dyno,直接从最终用户浏览器建立连接 到S3。“

直接上传到S3应该是解决方案,但看起来很难 让我用RefineryCMS / Dragonfly / Fog正确实现它。我不确定是否可以在没有对这些工具进行大修改的情况下,我想知道是否有替代方案。

感谢您的帮助

2 个答案:

答案 0 :(得分:4)

不是真的。 Heroku超时是你需要解决的石头事物。直接上传到S3是唯一的选择,需要进行某种上传后处理。

有一些解决方案,例如CarrierWaveDirect,但我不知道与Refinery一起使用会有多容易。

答案 1 :(得分:-4)

您可以尝试将unicorn添加到您的应用程序中。

配置/ unicorn.rb

worker_processes整数(ENV [“WEB_CONCURRENCY”] || 3)

超时180#<< Unicorn Timeout将允许更长的上传时间。

preload_app true

before_fork do | server,worker |

https://devcenter.heroku.com/articles/rails-unicorn