繁体   English   中英

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

[英]RoR: Scaling incoming email with Heroku/Mailgun

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

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

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

这是我的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

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

如果您需要其他信息,请告诉我。

感谢您的时间和协助。

编辑一些其他信息:

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

我发现了这一点:我发现了这一点: https : //appcasts.io/blog/writing-your-first-background-worker ,并将开始寻求利用它。 谢谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM