我试图在使用Rails在Heroku上运行Unicorn时允许大量上传,但我意识到任何大型上传可能需要比Unicorn工作者的超时时间更长的时间。这意味着(我已经看到这种情况发生),Unicorn主进程将终止上传大文件的工作程序,并且请求将超时(503错误)。
如果没有删除或大幅增加我的服务器的超时,是否有任何方法允许上传工作人员在上传完成时挂起?或者,我是否完全误解了,而且最有可能是导致我的上传超时的其他因素?
答案 0 :(得分:8)
如果您在独角兽面前使用nginx作为反向代理,则可以使用Upload Module。配置完成后,nginx会处理上传并将其存储在/ tmp目录中,然后你的独角兽会获得请求参数,告诉它上传资产的位置和内容类型。没有更多的工作人员接受上传。
如果您不希望在与Web服务相同的服务器上进行上传,而是将其存储在S3中,则应遵循@Neil Middleton的建议并进行设置,以便直接上传。
答案 1 :(得分:7)
如果您要上传到S3,那么您可以“简单地”让用户将文件直接上传到S3而不是通过您的dynos,并在上传完成后进行ping操作。
要获得比此更多的信息,请查看CarrierWaveDirect
之类的内容