通过 API 上传文件时 Heroku 前端超时

Posted

技术标签:

【中文标题】通过 API 上传文件时 Heroku 前端超时【英文标题】:Heroku frontend timeouts when uploading file through API 【发布时间】:2016-05-11 17:34:59 【问题描述】:

我有一个托管在 Heroku 上的 RESTful Rails API。我在 Heroku 上也有一个使用我的 API 的 Rails 前端。我在上传文件时遇到前端超时问题。我将上传请求发送到我的前端(使用jquery-fileupload-rails 完成),然后再向我的 API 发送一个请求。然而,即使是 1MB 的文件,前端似乎也会超时并放弃等待 API 的回复。文件上传工作正常。如果我刷新页面,图像就在那里。但是,我更愿意用图像动态更新我的页面。较小的文件似乎可以工作,可能是因为前端很快就会收到 API 的回复。

我知道 Heroku 对请求有 500 毫秒的时间限制,而且似乎没有办法改变它,所以我希望我能就这个问题得到一些建议。这只是不适用于 Heroku 吗?我应该以不同的方式将 ajax 文件上传到 API 吗?或者如果页面超时,我是否只需要刷新页面(也不知道我会怎么做)?提前致谢!!

【问题讨论】:

【参考方案1】:

您应该将文件上传到不同的服务,例如 Amazon 的 S3。直接上传到 Heroku 绝不是一个好主意。

【讨论】:

我使用 S3 进行存储。我在 Heroku 上的 API 使用 Paperclip 上传到它。我知道有一个直接转到 S3 的选项,但我需要 Imagemagick 先对它们进行一些处理,所以我不认为它是一个选项。 它变得更复杂了,但是你上传到S3,然后你通过调用reprocess来异步处理!在图像对象上。

以上是关于通过 API 上传文件时 Heroku 前端超时的主要内容,如果未能解决你的问题,请参考以下文章

如何将文件直接从 Django admin 上传到 Amazon S3?缓解 Heroku 应用程序错误(超时)

heroku中的django应用程序出现工作超时错误

使用 Spotify API 进行授权

从 django 静态文件提供服务并上传到 heroku 时无法找到反应静态文件

如何在 Angular 前端使用 Heroku (S3 CDN) 的“简单文件上传”功能

如何在 Heroku 上上传大文件(尤其是视频)