【发布时间】:2015-02-05 19:33:46
【问题描述】:
使用 Full Contact API,但它们的速率限制为 300 次/分钟。我目前将其设置为在上传电子邮件的 CSV 文件时执行 API 调用。我想对其进行排队,以便一旦达到速率限制或进行 300 次调用,它会等待 1 分钟并继续。然后我会把delayed_job放在上面。我怎样才能做到这一点?快速解决方法是使用
sleep 60
但是我怎样才能找到它已经拨打了 300 次电话,让它休眠或排队等待下一组?
def self.import(file)
CSV.foreach(file.path, headers: true) do |row|
hashy = row.to_hash
email = hashy["email"]
begin
Contact.create!(email: email, contact_hash: FullContact.person(email: email).to_json)
rescue FullContact::NotFound
Contact.create!(email: email, contact_hash: "Not Found")
end
end
end
【问题讨论】:
-
如何处理来自第 3 方的 rate_limit 异常并在 60 秒后重新安排作业
标签: ruby-on-rails ruby-on-rails-3 delayed-job rate-limiting fullcontact