RoR:使用Heroku / Mailgun扩展传入的电子邮件

时间:2014-09-11 08:58:44

标签: ruby-on-rails ruby heroku mailgun

我是设计可扩展RoR应用的新手,所以我希望就如何重新配置​​/重新架构以下内容提出建议。我有一个在Heroku上托管的RoR应用程序,它通过Mailgun接收传入的电子邮件给控制器,然后控制器解析电子邮件并上传它们进行存储。

在尝试处理包含多个/大附件的电子邮件时,我的Heroku日志中出现H12-Request Timeout错误。超时被报告回Mailgun,然后Mailgun尝试以预定义的时间间隔重试请求,同时Heroku继续处理请求...因此它被一个循环捕获,最终将多个相同文件上传到存储中。

在Heroku中,我有1个网络和1个工作dyno,运行Puma作为我的网络服务器。

这是我的puma.rb文件:

preload_app!

min_threads = Integer(ENV['MIN_THREADS'] || 0)
max_threads = Integer(ENV['MAX_THREADS'] || 5)

threads min_threads, max_threads
workers Integer(ENV['WORKER_COUNT'] || 3 )

on_worker_boot do
  ActiveSupport.on_load(:active_record) do
  if Rails.application.config.database_configuration
      config = Rails.application.config.database_configuration[Rails.env]
      config['reaping_frequency'] = ENV['DB_REAP_FREQ'] || 10 # seconds
      config['pool']              = ENV['DB_POOL']      || 5
      ActiveRecord::Base.establish_connection(config)
    end
  #  ActiveRecord::Base.establish_connection
  end
end

我不清楚在这种情况下如何最好地利用工作人员dynos,以及如何向Mailgun报告一切都很好,以便它不会继续尝试相同的请求。

如果您需要其他信息,请与我们联系。

感谢您的时间和帮助。

修改 一些其他信息:

我的控制器正在进行所有处理。 我查询数据库以匹配传入的电子邮件给用户。 此外,我正在请求/向第三方API发送数据...这是为了获取有效的身份验证令牌并上传数据。

1 个答案:

答案 0 :(得分:0)

我发现了这个:我发现了这个:https://appcasts.io/blog/writing-your-first-background-worker并且会开始寻求利用它。感谢。