2013-09-26 57 views
6

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

我们在本地测试时没有使用独角兽,本地也没有大文件的问题(尽管使用carrierwave将文件上传到AWS,就像使用production + staging一样)。但是,在生产服务器上,我看到我们超时。

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

谢谢! Ringo

+0

你可以尝试在本地使用独角兽吗? –

回答

0

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

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

+1

我的独角兽超时时间为15,最高可达30,但没有区别。我宁愿设计一个不依赖于增加超时的解决方案。 –

2

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

本博客文章(和GitHub库)是非常有帮助的:http://pjambet.github.io/blog/direct-upload-to-s3/

有了它,你应该能够得到直接到S3文件上传工作。您完全避免大量上传Heroku。使用jquery-fileupload的回调函数,您可以在文件成功上传后发布给应用程序,并使用delayed_job在后台处理它。确认您的用户上传成功是您需要处理的应用程序问题。

+0

另请参阅:http://stackoverflow.com/a/16341162/1546887 – Taavo