使用Heroku和Mailgun路由处理附件

时间:2013-04-05 06:25:10

标签: design-patterns heroku mailgun

我的webapp是部署到Heroku的Ruby on Rails应用程序。

我使用Mailgun Routes将电子邮件转发到我的Web应用程序。 Mailgun Routes的文档在http://documentation.mailgun.net/user_manual.html#um-routes

基本上,Mailgun路由作为HTTP参数发布主题,正文,发件人等内容。附件作为以multipart / form-data编码的文件上载进行POST。在控制器中,它们显示为UploadedFile(http://api.rubyonrails.org/classes/ActionDispatch/Http/UploadedFile.html)。

在控制器中,我继续将附件上传到S3。

但是,如果有大型附件或许多附件,请求将超时(Heroku臭名昭着的H12错误)。

我尝试使用后台工作人员(延迟工作),但遇到了这些问题

  • 将整个UploadedFile对象或UploadedFile.temp文件发送给后台工作程序会导致行为不可靠(延迟作业对大型对象(例如Model实例)不起作用)
  • 发送到临时文件的路径并尝试打开它不起作用,因为临时文件只能访问它们所在的动态游标(临时文件存储在web worker dyno中,并且从后台工作器dyno尝试访问它)失败 - Creating temporary files in Heroku

关于如何解决这个问题的任何聪明的想法?

1 个答案:

答案 0 :(得分:1)

我刚刚遇到使用Mailgun路由功能的类似问题。这个问题的答案似乎是使用2013年晚些时候发布的“商店”功能。希望在集成路由功能之前我会遇到这个问题,因为使用Store的方法是完全不同的。