6

我在 Heroku 上使用独角兽。我遇到的问题之一是文件上传。我们使用carrierwave进行上传,基本上,即使是大约2MB大小的文件,当上传完成50-60%时,Unicorn就会超时。

当我们在本地进行测试时,我们没有使用独角兽,我对本地的大文件没有任何问题(尽管文件使用carrierwave上传到AWS,就像生产+登台一样)。但是,在登台和生产服务器上,我看到我们遇到了超时。

解决此问题的任何策略?我不确定我是否可以将此文件上传延迟作业(因为我需要向我的用户确认该文件确实已成功上传)。

谢谢!林戈

4

2 回答 2

2

如果您通过 Heroku 将大文件上传到 S3,则无法合理避免超时。如果有人决定上传一个大文件,它就会超时。如果上传到 Heroku、传输到 S3 并处理的时间超过 30 秒,则请求将超时。也有充分的理由,30 多岁的请求只是糟糕的表现。

这篇博文(和 github repo)非常有帮助: http: //pjambet.github.io/blog/direct-upload-to-s3/

有了它,您应该能够进行直接到 s3 的文件上传工作。您完全避免在上传的大部分内容中使用 Heroku。使用 jquery-fileupload 的回调,您可以在文件成功上传后发布到您的应用程序,并使用延迟作业在后台处理它。向您的用户确认上传成功是您只需要处理的应用程序问题。

于 2013-09-26T18:33:13.630 回答
0

听起来你的超时设置太低了。你的独角兽配置是什么样的?

请参阅https://devcenter.heroku.com/articles/rails-unicorn以获得良好的起点。

于 2013-09-26T18:31:34.963 回答