2014-09-11 35 views
0

我是設計可縮放的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 ......這是爲了獲得有效的身份驗證令牌和上傳數據。

+0

你實際上在做什麼?你說解析並上傳它們?這實際上是在請求打開時發生的嗎?通過這樣的交易,您需要做到絕對最低限度,然後在後臺工作人員中執行艱苦工作,以避免出現請求週期。 – 2014-09-11 11:41:22

+0

是的,我相信我是。建議/如何建立一個後臺工作者?謝謝。 – user464180 2014-09-11 12:34:15

回答