【发布时间】:2013-03-27 11:23:33
【问题描述】:
我的 webapp 是部署到 Heroku 的 Ruby on Rails 应用程序。
我使用 Mailgun Routes 将电子邮件转发到我的 Web 应用程序。 Mailgun Routes 的文档在这里http://documentation.mailgun.net/user_manual.html#um-routes。
基本上,Mailgun 将主题、正文、发件人等内容作为 HTTP 参数发送。附件以多部分/表单数据编码的文件上传形式发布。在控制器中,它们显示为 UploadedFile (http://api.rubyonrails.org/classes/ActionDispatch/Http/UploadedFile.html)。
在控制器中,我继续将附件上传到 S3。
但是如果有大附件或很多附件,请求会超时(Heroku 臭名昭著的 H12 错误)。
我尝试使用后台工作人员(延迟工作),但遇到了这些问题
- 将整个 UploadedFile 对象或 UploadedFile.tempfile 发送到后台工作人员会导致不可靠的行为(延迟作业不能很好地处理大型对象,例如模型实例)
- 发送临时文件的路径并尝试打开它不起作用,因为只有它们所在的 dyno 才能访问临时文件(临时文件存储在 web worker dyno 中,并且尝试从后台 worker dyno 访问它失败 - Creating temporary files in Heroku)
关于如何解决这个问题有什么聪明的想法吗?
【问题讨论】:
标签: design-patterns heroku mailgun