我有一个使用rails 3.2的应用程序,它在heroku上运行并存储在S3上。用户可以选择上传照片,这些照片可以使用carrierwave / MiniMagick处理成各种尺寸。

我们看到的问题是浏览器30%的时间超时。上传代码(最多可以上传四个图像)如下所示:我正在使用carrierwave_backgrounder来延迟图像处理,但是我们仍然超时。这是相当小的图像-通常为150KB PNG。

mount_uploader :image1, ImageUploader
process_in_background :image1

mount_uploader :image2, ImageUploader
process_in_background :image2

mount_uploader :image3, ImageUploader
process_in_background :image3

mount_uploader :image4, ImageUploader
process_in_background :image4


这是我们看到的错误

app[web.1]: Started POST "/offices" for 197.16.140.27 at 2013-05-23 23:32:18 +0000
app[web.1]: E, [2013-05-23T23:32:49.042937 #2] ERROR -- : worker=0 PID:10 timeout (31s > 30s), killing


瘦身和独角兽都会发生同样的事情。

我所做的阅读建议我应该直接上传到S3,但是图像处理会延迟,这对我来说是个问题(延迟/复杂度)。我应该做些什么?

最佳答案

John是对的:直接上传到heroku时会发生这种情况。我写了一些处理heroku上传here的策略。

08-18 04:43