2014-01-06 73 views
0

這裏是我的代碼的Rails:批量訂閱用戶MailChimp API在Heroku上運行到超時問題

users = User.all 

    # Latency issues with connecting with Heroku and MC 
    Gibbon::API.timeout = 120 

    gb = Gibbon::API.new 
    batch = [] 
    users.each do |user| 
    batch << user.mail_chimp_information 
    end 

    puts gb.lists.batchSubscribe(id: "MC_ID_HERE", batch: batch, double_optin: false, update_existing: true) 

上面的代碼被設置爲在該批次訂閱(或更新現有的)夜間cron用戶運行到我的MailChimp帳戶。我的應用程序在Heroku上運行,這會導致檢索用戶並在將它們發送到MailChimp之前循環播放它們。如果我刪除Gibbon::API.timeout = 120行,則默認值爲15秒並超時。

將用戶信息批量上傳到外部API的最佳做法是什麼?手動設置超時是目前的一個快速解決方案,但隨着用戶羣的增加,超時再次發生的威脅就越大。

回答

0

最佳做法是使用延遲作業爲您完成工作。

想法是,您將每個作業設置爲一次性(而不是多次)延遲作業,然後有一個處理訂閱的後臺隊列。

公共寶石是: