Rails:批量订阅用户到Heroku上的MailChimp API运行到超时问题

时间:2014-01-06 02:44:54

标签: ruby-on-rails postgresql heroku mailchimp gibbon

这是我的代码

  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)

上面的代码设置为在批量订阅(或更新现有)用户到我的MailChimp帐户的夜间cron上运行。我的应用程序在Heroku上运行,导致检索用户的问题,然后在将它们发送到MailChimp之前循环遍历它们。如果我删除Gibbon::API.timeout = 120行,则默认值为15秒并超时。

将用户信息批量上传到外部API的最佳做法是什么?现在手动设置超时是一个快速解决方案,但随着我的用户群增长,超时再次发生的威胁就越大。

1 个答案:

答案 0 :(得分:0)

最佳做法是使用延迟工作为您完成工作。

这个想法是你将每个作业设置为一个关闭(而不是很多)延迟作业,然后有一个处理订阅的后台队列。

常见的宝石是: