2011-10-21 124 views
11

我的應用程序出現問題,基於部署在heroku上的RefineryCMS 1.0.8 。Heroku超時上傳大文件到s3

Heroku的請求超時時間爲30秒。當通過RefineryCMS管理上傳文件> 4MO時,有時需要30秒以上才能執行請求(主要是因爲需要將文件上傳到S3的時間)。

在這種情況下,測功機將被「凍結」,並且 在大約30分鐘內沒有響應(在此期間的每個請求結束 由H12錯誤請求超時結束)。這種現象正是說明的最後一條消息在克里斯托在this discussion

從這個other discussionthe heroku documentation :「直接上傳到S3是首選的方法,如果你 與上傳文件超過4MB大的工作的想法是。跳過跳 到您的動態,從終端用戶瀏覽器直接 連接到S3。「

直接上傳到S3應該是解決方案,但看起來很難 讓我用RefineryCMS/Dragonfly/Fog正確實現它。我不確定如果沒有對這些工具進行大的修改是否可能,我想知道是否有替代方案。

感謝您的幫助

回答

4

不是真的。 Heroku超時是一件需要解決的問題。直接上傳到S3是唯一的選擇,需要某種上傳後處理。

在那裏有解決方案,如CarrierWaveDirect,但我不知道這將是多麼容易與煉油廠一起使用。

+0

它並不是真正的石頭。如果你使用了一個解決方案(比如Eventlet),你可以設置更高的時間(我將我的設置設置爲60秒,併成功地將照片上傳到我的應用程序48秒),Heroku不會在意,阻塞。 –

-4

您可以嘗試將獨角獸添加到您的應用程序中。

配置/ unicorn.rb

worker_processes整數(ENV [ 「WEB_CONCURRENCY」] || 3)

超時180#< <獨角獸超時將允許更長的上傳時間。

preload_app true

before_fork do | server,worker |

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

+0

這是否會覆蓋heroku超時? – superluminary

+0

當使用rails時,允許我的s3上傳完成的時間超過180秒 - 我想Heroku會默認使用獨角獸設置的超時時間。 – BIT

+2

Heroku路由器不會默認使用應用程序中的獨角獸配置。 –