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

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

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

在这种情况下,dyno将被“冻结”并且在大约30分钟内没有响应(此时间期间的每个请求都以H12错误请求超时结束)。 这种行为正是在本讨论的最后一条消息中描述christos的原因

从其他讨论和heroku文档 :“直接上传到S3是首选方法,如果你正在处理大于4MB的文件上传。想法是跳过你的dyno跳转,直接从最终用户浏览器建立连接到S3。“

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

谢谢你的帮助

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

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

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

配置/ unicorn.rb

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

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

preload_app是的

before_fork do | server,worker |

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