我是設計可縮放的RoR應用程序的新手,因此我希望能夠提供有關如何重新配置/重新構建以下內容的建議。我在Heroku上託管了一個RoR應用程序,該應用程序通過Mailgun將收到的電子郵件發送給控制器,然後該控制器解析電子郵件並將其上傳以供存儲。RoR:使用Heroku/Mailgun縮放收到的電子郵件
嘗試處理具有多個/大型附件的電子郵件時,我在我的Heroku日誌中收到H12-請求超時錯誤。超時報告返回給Mailgun,然後Mailgun嘗試以預定的時間間隔重試請求,同時Heroku繼續處理請求...因此它被陷入循環,並且我將多個相同文件上傳到存儲中。
在Heroku中我有1個網絡和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
我對如何最好地採取這種情況的優勢工人DYNOS的,以及如何彙報Mailgun不清楚,一切都很好,使其不會繼續嘗試相同的請求。
如果您需要更多信息,請讓我知道。
感謝您的時間和協助。
編輯 一些額外的信息:
我的控制器是做所有的處理。 我查詢數據庫以將傳入的電子郵件與用戶進行匹配。 此外,我正在請求/發送數據到第三方API ......這是爲了獲得有效的身份驗證令牌和上傳數據。
你實際上在做什麼?你說解析並上傳它們?這實際上是在請求打開時發生的嗎?通過這樣的交易,您需要做到絕對最低限度,然後在後臺工作人員中執行艱苦工作,以避免出現請求週期。 – 2014-09-11 11:41:22
是的,我相信我是。建議/如何建立一個後臺工作者?謝謝。 – user464180 2014-09-11 12:34:15