gpt4 book ai didi

ruby-on-rails - 如何限制延迟作业以免激怒 Facebook API

转载 作者:行者123 更新时间:2023-12-04 12:24:38 28 4
gpt4 key购买 nike

我正在构建一个应用程序,它将大量使用 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...'), 0,
# 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 任务与 FB api 调用交织在一起。

关于ruby-on-rails - 如何限制延迟作业以免激怒 Facebook API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5891318/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com