Ruby   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – 如何限制延迟作业以免激怒Facebook API大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在构建一个应用程序,它将很多地击中Facebook图形API.我了解到他们每600秒有600个请求的速率限制.

我正在使用延迟工作进行所有后台处理.安排延迟工作以保持在fb api速率限制之下的好方法是什么?是否有任何延迟工作的技巧或我是否需要构建一个单独的后台任务处理器以不超过我的速率限制?

谢谢

解决方法

每600秒600次请求平均每秒1次.

不是很快!

1)根据您公司的规模和重量,我会调查FB,看看您是否可以获得为您筹集的限额.

2)你可以坚持使用DelayedJob,无需重新发明轮子.您只需要更改调度程序.

在我的DelayedJob安装中,我使用“run_at”列不仅仅是设置重试作业的时间 – 我还将其用作首先运行作业的时间.您还可以使用它来限制您的工作.

在DelayedJob文件job.rb中更改:

# added run_at param
# eg   Delayed::Job.enqueue NewsletterJob.new('lorem ipsum...'),#                           Delayed::Job.db_time_now + 15.minutes
def self.enqueue(object,priority = 0,run_at = nil)
  unless object.respond_to?(:perform)
    raise ArgumentError,'CAnnot enqueue items which do not respond to perform' 
  end

  Job.create(:payload_object => object,:priority => priority,:run_at => run_at)    
end

为了你的目标,我会跟踪FB api呼叫最后一次入队的时间,并安排下一次将run_at调度至少一秒钟.

好处:您可以使用FB api调用交错其他非FB任务.

大佬总结

以上是大佬教程为你收集整理的ruby-on-rails – 如何限制延迟作业以免激怒Facebook API全部内容,希望文章能够帮你解决ruby-on-rails – 如何限制延迟作业以免激怒Facebook API所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。