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